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