我在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>
预先感谢
答案 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=''}"