WPF 元素代理解决MVVM模式下DataGridColumn绑定无效问题

众所周知DataGridColumns不是可视化树的一部分,所以无法进行相对绑定,因此它们不连接到DataGrid

此时我们可以在父级节点进行元素代理,使用该元素的DataContext

<Grid>
  <Grid.Resources>
    <FrameworkElement x:Key="ProxyElement" DataContext="{Binding}" />
  </Grid.Resources>
  <DataGrid ItemsSource="{Binding ListItem}" >
    <DataGrid.Columns>
      <DataGridTextColumn Header="动态显示隐藏列" Visibility="{Binding DataContext.ShowDetail, Converter={StaticResource Boolean2VisibilityReConverter}, Source={StaticResource ProxyElement}}"/>
    </DataGrid.Columns>
  </DataGrid>
</Grid>

上述方法也适用于连接DataContext到Popups和ContextMenus(即未连接到可视化树的任何元素)

上一篇:MVC模式和MVP模式和MVVM模式的简介


下一篇:WPF学习——创建一个基于mvvm模式的简单小示例