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

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

此时咱们能够在父级节点进行元素代理,使用该元素的DataContextcode

<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(即未链接到可视化树的任何元素)xml

相关文章
相关标签/搜索