众所周知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