隐藏 WPF 数据网格中的元素



我在 WPF 中DataGrid,项目源是整数的 2D 数组(DataGrid2Dnuget 用于处理它(。现在,如何隐藏特定元素?例如,如果单元格包含 0,则该单元格显示为空。我找不到任何关于它的信息;我知道StringFormat,但这不是string

一种可能的解决方案是使用DataGridTextColumn将数据呈现为字符串数据类型。绑定到此类列将允许使用自定义值转换器根据您自己的逻辑来表示单元格内容。

<Window x:Class="Solution.MainWindow"
...
xmlns:dataGrid2D="http://gu.se/DataGrid2D">
<Window.Resources>
<local:CellValueConverter x:Key="cellValueConverter"/>
</Window.Resources>
<Grid>
<DataGrid AutoGenerateColumns="False"
dataGrid2D:ItemsSource.Array2D="{Binding Data2D}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding C0, Converter={StaticResource cellValueConverter}}" Header="Col 1"/>
<DataGridTextColumn Binding="{Binding C1}" Header="Col 2" />
<DataGridTextColumn Binding="{Binding C2}" Header="Col 3" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

代码隐藏:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public int[,] Data2D { get; set; } = new int[,]
{
{0, 3},
{2, 7},
{5, 6}
};
}

自定义值转换器CellValueConverter.cs

public class CellValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value.ToString() == "0")
{
return string.Empty;
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

附言我希望我正确理解了你正在使用 NuGet 包来处理与 2D 数组的绑定。

最新更新