由于我们可以在数据表的数据列中添加表达式,是否可以创建类似DataGridTextColumn
的列并设置Binding Expression?
如果是,那么如何?
正在为DataGridComputedColumn
创建我自己的WPF DataGrid
,它允许为该列设置表达式,以便在运行时连接DataSource时,它会在运行时自动计算此计算列。
例如,我有表EMP With 2 Columns FirstName和LastName。这将是DataGridTextColumn
中的WPF DataGrid
。现在第三列将是我自己的自定义DataGridComputedColumn
其中包含像表达式这样的属性,我可以将表达式设置为FirstName +' ' + LastName
,在运行时评估并生成第三列。
由于 Visshal
答案 0 :(得分:1)
您的绑定属性中不能包含表达式。但是,您可以使用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>