C# 将DataGridColumnHeader与所选行绑定';s属性
考虑以下ViewModel:C# 将DataGridColumnHeader与所选行绑定';s属性,c#,wpf,xaml,data-binding,wpfdatagrid,C#,Wpf,Xaml,Data Binding,Wpfdatagrid,考虑以下ViewModel: public class MyViewModel { public ObservableCollection<Foo> foos { get; set; } } [PropertyChanged.ImplementPropertyChanged] public class Foo { public string Name { get; set; } public string NameHeader { get; set; }
public class MyViewModel
{
public ObservableCollection<Foo> foos { get; set; }
}
[PropertyChanged.ImplementPropertyChanged]
public class Foo
{
public string Name { get; set; }
public string NameHeader { get; set; }
}
Header
与NameHeader
的绑定无效!当然,然后我意识到不同的行将具有不同的NameHeader
值
所以我真正想要的是将列的
标题
与所选行的名称标题
绑定。如何实现这一点?使用带有文本块的HeaderTemplate
,该文本块绑定到数据网格的SelectedItem
属性:
<DataGrid x:Name="FooTable"
ItemsSource="{Binding Path=foos}"
AutoGenerateColumns="False"
CanUserAddRows="True"
AutomationProperties.IsColumnHeader="True"
SelectionMode="Single"
SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Header="{Binding NameHeader, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
Width="Auto" />
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Binding="{Binding Name}" Width="Auto">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=SelectedItem.NameHeader, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>