允许WPF Datagrid中具有自动生成的列的空单元格

时间:2018-08-27 06:51:00

标签: c# wpf datagrid

我在WPF应用程序中有一个绑定到集合的数据网格:

public class MyPropertyCollection : ObservableCollection<MyProperty>

该属性具有可空值和不可空值。

public class MyProperty
{
    public int Required{ get; set; }
    public int? Optional{ get; set; }
}

数据网格不允许任何一个属性的空单元格值。

如果该值可为空,是否有办法允许它为单元格采用空值?

注意:列是自动生成的,因此在xaml中不会单独定义它们。我正在使用.Net 4.6.1

<DataGrid x:Name="dgMyProperties">    </DataGrid>

预先感谢

2 个答案:

答案 0 :(得分:0)

可以通过在AutoGeneratingColumn中以编程方式设置TargetNullValue来完成它

private void DoAutoGeneratingColumn(object sender, System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
{
    System.Windows.Controls.DataGridBoundColumn textCol = e.Column as System.Windows.Controls.DataGridBoundColumn;
    if (textCol != null)
    {
        textCol.Binding.TargetNullValue = string.Empty;
    }
}

还有xaml:

<DataGrid x:Name="dgMyProperties" AutoGeneratingColumn="DoAutoGeneratingColumn">
</DataGrid>

默认情况下未设置TargetNullValue。 最初,我还检查该列是否为可为空的值,但这不是必需的,因为如果您有一个不能为null的值的空白单元格,它将自动得到一个错误。

请注意,以上内容适用于以下列类型:DataGridTextColumn,DataGridCheckBoxColumn,DataGridHyperlinkColumn。

答案 1 :(得分:0)

在 XAML 中,您只需在绑定中添加 TargetNullValue='',如下例所示

Binding="{Binding Path=Value, TargetNullValue=''}"