从 DataGridTextColumn.Header 绑定到 Parent.Parent
本文关键字:Parent 绑定 Header DataGridTextColumn | 更新日期: 2023-09-27 17:56:52
嗨,通常它应该自动工作,但它不会
XAML:
<DataGrid AutoGenerateColumns="False" Width="350" IsReadOnly="True"
ItemsSource="{Binding StichwortList}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding DisplayName}" Width="350">
<DataGridTextColumn.Header>
<DockPanel Margin="0" Width="340" HorizontalAlignment="Stretch" LastChildFill="True">
<TextBlock DockPanel.Dock="Left" Margin="0" Text="Name"/>
<Button DockPanel.Dock="Right" Content="-" Margin="0" Width="23" Command="{Binding RemoveStichwortCommand}"/>
<Button DockPanel.Dock="Right" Content="+" Margin="0" Width="23" Command="{Binding AddStichwortCommand}"/>
<Label />
</DockPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
相关代码:
private RelayCommand _addStichwortCommand;
public ICommand AddStichwortCommand
{
get { return _addStichwortCommand ?? (_addStichwortCommand = new RelayCommand(param => this.OnAddStichwort())); }
}
private void OnAddStichwort()
{
// some code
}
private RelayCommand _removeStichwortCommand;
public ICommand RemoveStichwortCommand
{
get { return _removeStichwortCommand ?? (_removeStichwortCommand = new RelayCommand(param => this.OnRemoveStichwort())); }
}
private void OnRemoveStichwort()
{
// some code
}
我对此视图的其他绑定有效,我的命令绑定也可以正常工作
那么任何人都可以告诉我我的绑定有什么问题吗?
编辑
哦,我忘了
这一切都在一个Usercontrol
中,其Datacontext
包含所有属性以及绑定和命令
灵魂:
DockPanel
需要将他的Datacontext
绑定到Usercontrol
Datacontext
,Usercontrol
需要一个名字
x:Name="uc"
<DockPanel Margin="0" Width="340" HorizontalAlignment="Stretch" LastChildFill="True" DataContext="{Binding ElementName=uc, Path=DataContext}">
<TextBlock DockPanel.Dock="Left" Margin="0" Text="Name"/>
<Button DockPanel.Dock="Right" Content="-" Margin="0" Width="23" Command="{Binding RemoveStichwortCommand}"/>
<Button DockPanel.Dock="Right" Content="+" Margin="0" Width="23" Command="{Binding AddStichwortCommand}"/>
<Label />
</DockPanel>
如果上面的解决方案不起作用,您应该看看这个答案
你必须
在 XAML 中命名UserControl
并在绑定中使用它。类似于以下代码:
<UserControl x:Name="uc" >
.
.
.
<Button DockPanel.Dock="Right" Content="-" Margin="0" Width="23" Command="{Binding RemoveStichwortCommand, ElementName=uc}"/>
<Button DockPanel.Dock="Right" Content="+" Margin="0" Width="23" Command="{Binding AddStichwortCommand, ElementName=uc}"/>
希望这有帮助。