gpt4 book ai didi

c# - 将 DataGridColumnHeader 与所选行的属性绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 17:34:27 25 4
gpt4 key购买 nike

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

请注意,我使用的是 Fody's PropertyChanged使我的 ViewModel 属性实现 INotifyPropertyChanged

我有以下 DataGrid:

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

HeaderNameHeader 的绑定(bind)将不起作用!当然,然后我意识到不同的行将具有不同的 NameHeader 值。

所以我真正想要的是将列的Header 与所选行的NameHeader 绑定(bind)。我怎样才能做到这一点?

最佳答案

HeaderTemplate 与绑定(bind)到 DataGridSelectedItem 属性的 TextBlock 结合使用:

<DataGridTextColumn Binding="{Binding Name}" Width="Auto">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=SelectedItem.NameHeader, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>

关于c# - 将 DataGridColumnHeader 与所选行的属性绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com