我正在尝试通过上下文菜单显示/隐藏数据网格的列。我试图通过这个 XAML 为它使用绑定:
<Grid>
<DataGrid AutoGenerateColumns="False" Name="dataGrid1">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Show Column 1" IsCheckable="True"
x:Name="showcol1" IsChecked="True" />
<MenuItem Header="Show Column 2" IsCheckable="True"
x:Name="showcol2" IsChecked="False" />
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridTextColumn Header="Col 0" />
<DataGridTextColumn Header="Col 1"
Visibility="{Binding ElementName=showcol1,
Converter={StaticResource BooleanToVisibilityConverter},
Path=IsChecked}" />
<DataGridTextColumn Header="Col 2"
Visibility="{Binding ElementName=showcol2,
Converter={StaticResource BooleanToVisibilityConverter},
Path=IsChecked}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
我什至尝试了其他选项,例如BindsDirectlyToSource=True
和UpdateSourceTrigger=PropertyChanged
。但是,当我选中/取消选中菜单项时,这些列不会改变它们的可见性。我究竟做错了什么?这在纯 XAML 中实际上可能吗?
在这个问题中,答案使用x:Reference
. 我也试过了,但收到错误
服务提供者缺少 INameResolver 服务。
谷歌告诉我这是VS2010的一个bug?我能做些什么来解决这个问题?还是我最好的办法是切换到 VS2012?