是否可以将 2 个属性绑定到单个 DataGrid 字段中?

Dav*_*Dev 3 c# wpf xaml binding

目前我有以下几点:

<DataGridTextColumn Header="Customer Name" 
    x:Name="columnCustomerSurname" 
    Binding="{Binding Path=Customer.FullName}" SortMemberPath="Customer.Surname"
    IsReadOnly="True">
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)

其中Customer.FullName定义为:

public string FullName
{
    get { return string.Format("{0} {1}", this.Forename, this.Surname); }
}
Run Code Online (Sandbox Code Playgroud)

绑定有效,但不理想。

如果有人更新ForenameSurname属性,则更新不会反映在 DataGrid 中,直到它被刷新。

我发现了与此类似的问题,例如/sf/answers/378514811/使用MultiBinding但它适用于 aTextBlock而不是DataGrid.

我还有另一种方法可以让这个工作吗?

小智 5

一种选择是基于两个文本块创建一个复合模板列,当对任一属性进行更改时,这仍然允许表单更新。

例如。

<DataGridTemplateColumn Header="Customer Name">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Customer.ForeName}"/>
                <TextBlock Text="{Binding Path=Customer.SurName}"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)