WPF - 从.resx和DataGrid列标题中的VM绑定两个字符串

时间:2017-04-12 08:43:28

标签: wpf xaml mvvm binding

如何将.resx文件和ViewModel中的两个字符串绑定到DataGrid列标题中。以下代码仅绑定Resources文件中的字符串。

<DataGridTextColumn Binding="{Binding Length}">
    <DataGridTextColumn.Header>
        <TextBlock>
            <Run Text="{x:Static p:Resources.Length}" />
            <Run Text="{Binding LengthUnit}" />
        </TextBlock>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

VM:

public string LengthUnitName {
    get { return _lengthUnitName; }
    set { SetProperty(ref _lengthUnitName, value); }
}

1 个答案:

答案 0 :(得分:1)

定义HeaderTemplate

<DataGridTextColumn Binding="{Binding Length}">
    <DataGridTextColumn.HeaderTemplate>
        <DataTemplate>
            <TextBlock>
                <Run Text="{x:Static p:Resources.Length}" />
                <Run Text="{Binding Path=Items[0].LengthUnit, RelativeSource={RelativeSource AncestorType=DataGrid}, Mode=OneWay}" />
            </TextBlock>
        </DataTemplate>
    </DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>

如果在视图模型中定义了LengthUnit属性,则可以这样绑定:

<Run Text="{Binding Path=DataContext.LengthUnit, RelativeSource={RelativeSource AncestorType=DataGrid}, Mode=OneWay}" />