WPF 数据网格列的默认值

问题描述 投票:0回答:4

我的 WPF 应用程序中有一个 DataGrid。 我想知道是否有一种方法可以显示数据网格中列的默认值。 例如,我让用户能够向 DataGrid 添加新行。 因此,在 DataGrid 的底部,始终有一个空白行供用户添加数据。 我希望这一行中的列有一个默认值。 有什么办法可以实现这个功能吗? 谢谢!

c# wpf datagrid
4个回答
3
投票

假设您的

ItemsSource
中的
DataGrid
SomeClass
的集合,并且您在 DataGrid 列中显示
Properties
中的不同
SomeClass
。您可以做的是在默认
SomeClass
的构造函数中为
Properties
分配一些默认值。通过这种方式,您可以在 DataGrid 中拥有默认列值。

编辑

正如你所说,列的

itemssource
是一个字符串,我能想到一种方法..

使其成为

SomeClass
的集合,它将仅具有
string
属性。在
SomeClass
的默认构造函数中,为该字符串指定一个默认值。该默认值将出现在您的数据网格列中


0
投票

在 DataGrind 上创建一个 CheckBox 列并将其绑定到“myBoolColumn”

<DataGridCheckBoxColumn Header="Selected" Binding="{Binding myBoolColumn}" />

DataTable data = new DataTable();
data.Columns.Add("myBoolColumn", typeof(System.Boolean));
data.Columns["myBoolColumn"].DefaultValue = false;

0
投票

实际上你可以在

ValueConverters
的帮助下做到这一点。当
CanUserAddRows=Tru
e 时,行的
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


0
投票

如果您绑定到 DataGridColumn 值,则可以使用 FallBackValue 显示如下所示的默认值(或者可以使用转换器):

<DataGridTextColumn Header="SomeHeader" Binding="{Binding SomeDataGridItem, FallbackValue=0}">

如果您正在访问 ItemSource 集合的属性,这也应该有效:

<DataGridTextColumn Header="SomeHeader" Binding="{Binding SomeDataGridItem.SomeProperty, FallbackValue=0}">
© www.soinside.com 2019 - 2024. All rights reserved.