Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/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# 将DataGridColumnHeader与所选行绑定';s属性_C#_Wpf_Xaml_Data Binding_Wpfdatagrid - Fatal编程技术网

C# 将DataGridColumnHeader与所选行绑定';s属性

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; }

考虑以下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; }
}
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>