7

コンテキスト メニューを使用してデータグリッドの列を表示/非表示にしようとしています。この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に切り替えるのがベストショットですか?

4

1 に答える 1