コンテキスト メニューを使用してデータグリッドの列を表示/非表示にしようとしています。この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 サービスがありません。
Google は、これは VS2010 のバグだと教えてくれましたか? これを解決するにはどうすればよいですか? それともVS2012に切り替えるのがベストショットですか?