Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF DataGrid列中设置绑定表达式?_C#_Wpf_Datagrid_Expression - Fatal编程技术网

C# 在WPF DataGrid列中设置绑定表达式?

C# 在WPF DataGrid列中设置绑定表达式?,c#,wpf,datagrid,expression,C#,Wpf,Datagrid,Expression,由于我们可以在数据表的数据列中添加表达式,是否可以创建类似DataGridTextColumn的列,并设置绑定表达式? 如果是,那怎么办 当我为WPF DataGrid创建自己的DataGridComputedColumn时,它允许为该列设置表达式,以便在连接数据源时在运行时自动计算该计算列 例如,我的表EMP有两列FirstName和LastName。这将是WPF DataGrid中的DataGridTextColumn。现在,第三列将是我自己的自定义DataGridComputedColum

由于我们可以在数据表的数据列中添加表达式,是否可以创建类似
DataGridTextColumn
的列,并设置
绑定表达式?
如果是,那怎么办

当我为
WPF DataGrid
创建自己的
DataGridComputedColumn
时,它允许为该列设置表达式,以便在连接数据源时在运行时自动计算该计算列

例如,我的表EMP有两列FirstName和LastName。这将是
WPF DataGrid
中的
DataGridTextColumn
。现在,第三列将是我自己的自定义
DataGridComputedColumn
,它具有类似于属性的表达式,在该表达式中,我可以将表达式设置为
FirstName+“”+LastName
,在运行时计算并生成第三列

谢谢
Vishal

绑定属性中不能有表达式。但是,您可以使用
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>

...
...