我在我的WPF应用程序中有一个DataGrid。我想知道是否有一种方法可以显示DataGrid列的默认值。例如,我允许用户向DataGrid添加新行。因此,在DataGrid底部,始终有一个空白的空行供用户添加数据。我希望在该行的某个列中有一个默认值。有没有办法实现这个功能?谢谢!
ValueConverters
来实现此操作。当CanUserAddRows=True
时,行的DataContext
会绑定到ItemsSource
元素或{DataGrid.NewItemPlaceholder}
用于空白行。<DataGrid ItemsSource="{Binding Path=Collection}" CanUserAddRows=True >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Converter={StaticResource ShowSuitablePart}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是一个名为ShowSuitablePart
的转换器代码。
public class ShowSuitablePart : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value.ToString() == "{DataGrid.NewItemPlaceholder}")
return "This is blank row, just click me to create a new one";
else
((YourCollectionObject)value).SomeProperty;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new Exception();
}
}
TwoWay
绑定,您将不得不在DataTemplate
中使用2个元素。一个用于空行,第二个用于具有TwoWay
绑定的常规行。设置可见性绑定以隐藏常规行的第一个元素和空白行的第二个元素。ValueConverter
。<DataGridCheckBoxColumn Header="Selected" Binding="{Binding myBoolColumn}" />
DataTable data = new DataTable();
data.Columns.Add("myBoolColumn", typeof(System.Boolean));
data.Columns["myBoolColumn"].DefaultValue = false;