WPF中的绑定祖先元素[重复]
Posted
技术标签:
【中文标题】WPF中的绑定祖先元素[重复]【英文标题】:Binding ancestor element in WPF [duplicate] 【发布时间】:2019-06-09 16:51:00 【问题描述】:我正在努力通过将 Visibility 属性绑定到 viewModel 的属性来隐藏 Datagrid 的列。 ItemsSource 工作正常,我在网格中有很多行,Datacontext 设置正确。你能帮我解决我做错了什么吗?谢谢
<StackPanel>
<DataGrid ItemsSource="Binding SortedPlanning" IsReadOnly="True" AutoGenerateColumns="False" CanUserResizeRows="False">
<DataGrid.Columns >
<DataGridTextColumn Header ="NNI" Binding="Binding SortedPlanning.Nni" Width="80" Visibility="Binding RelativeSource=RelativeSource FindAncestor, AncestorType=x:Type StackPanel, Path=ColumnVisibility">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header ="Nom" Binding="Binding LastName" Width="120" Visibility="Binding RelativeSource=RelativeSource FindAncestor, AncestorType=x:Type UserControl, Path=ColumnVisibility">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header ="Prénom" Binding="Binding FirstName" Width="80" Visibility="Binding RelativeSource=RelativeSource FindAncestor, AncestorType=x:Type Window, Path=ColumnVisibility">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGridTextColumn>
<DataGridTextColumn Header ="Campagne" Binding="Binding Campaign" Width="120">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid>
</StackPanel>
查看模型:
public interface IPlanningViewModel : IDisposable
ObservableCollection<PlanningEntry> SortedPlanning get;
Visibility ColumnVisibility get;
bool FilterGrid get; set;
DateTime FromDate get; set;
DateTime ToDate get; set;
我希望列“NNI”、“Nom”和“Prénom”绑定到 VM 的 ColumnVisibility,但它没有发生。
【问题讨论】:
【参考方案1】:您将使用以下语法。
它应该可以解决您的问题。
<DataGridTextColumn Visibility="Binding Path=DataContext.ColumnVisibility, RelativeSource=RelativeSource AncestorType=DataGrid" />
【讨论】:
不幸的是它不能解决问题。 DataGridTextColumn 仍然没有绑定到 VM 的 ColumnVisibility 属性。 而且“重复”的答案也没有解决问题......以上是关于WPF中的绑定祖先元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章