我正在尝试通过上下文菜单来显示/隐藏数据表格的列。我试图使用绑定实现,下面是相关的XAML代码:
我甚至尝试了其他选项,例如
在this问题中,答案使用了
<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中是否可行?在this问题中,答案使用了
x:Reference
。我也尝试了,但是收到了错误信息:
谷歌告诉我这是VS2010的一个bug?我该怎么解决呢?或者我最好换成VS2012?服务提供程序缺少INameResolver服务。
x:Reference
,并没有观察到任何问题。 - Anatoliy Nikolaev