正在WPF DataGrid列中设置绑定表达式
本文关键字:设置 绑定 表达式 WPF DataGrid 正在 | 更新日期: 2023-09-27 18:11:11
由于我们可以在数据表的数据列中添加表达式,是否可以创建类似DataGridTextColumn
的列并设置Binding Expression?
如果是,那么如何?
当我为WPF DataGrid
创建我自己的DataGridComputedColumn
时,它允许为该列设置表达式,以便在运行时附加DataSource时,它会在运行时自动计算此Computed column。
例如,我有一个EMP表,它有两列FirstName和LastName。这将是WPF DataGrid
中的DataGridTextColumn
。现在第三列将是我自己的自定义DataGridComputedColumn
,它具有类似表达式的属性,在其中我可以将表达式设置为FirstName +' ' + LastName
,在运行时计算并生成第三列。
谢谢Visshal
绑定属性中不能有表达式。但是你可以用IValueConverter
:来写
public class FirstAndLastnameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var emp = value as Employee;
return string.Format("{0} {1}", emp.FirstName, emp.LastName);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
在您的XAML中:
<Window.Resources>
<me:FirstAndLastnameConverter x:Key="converter" />
</Window.Resources>
...
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=FirstName}"/>
<DataGridTextColumn Binding="{Binding Path=LastName}"/>
<DataGridTextColumn Binding="{Binding Converter={StaticResource converter}}"/>
...
</DataGrid.Columns>
</DataGrid>