ItemsSource
にバインドするデータグリッドがありCollectionViewSource
ます。
各列Path
でバインディングのプロパティを指定して、表示する特定の情報を取得します。
私がやりたいことは、ユーザーがより多くの情報を必要とする場合に、いくつかの列をチェックボックスで切り替えることです。これを行うには、表示プロパティをチェックボックスの値に (コンバーターを使用して) バインドする必要がありますが、列のデータ コンテキストがバインドに干渉していることは確かです。
<DataGrid ItemsSource="{Binding Source={StaticResource cvs}}" ....>
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}"
Visibility="{Binding IsChecked,
ElementName=IncludeFullHist,
Converter={StaticResource boolItemsConverter}}"/>
</DataGrid.Columns>
</DataGrid>
ビューモデルにもチェックボックスが必要なので、そのIsChecked
プロパティをビューモデルのプロパティにバインドします
<CheckBox x:Name="IncludeFullHist" IsChecked="{Binding Path=ManagerFullHist }" />
私のページの他の要素については、次の 2 つの方法のいずれかを使用して可視性バインディングを接続できましたが、それらをデータグリッドにコピーすると、どちらも機能しないようです。
<TextBlock DockPanel.Dock="Left" Text=" Visible 2 "
Visibility="{Binding Path=DataContext.ManagerFullHist,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},
Converter={StaticResource boolItemsConverter}}"/>
<TextBlock DockPanel.Dock="Left" Text=" Visible 3 "
Visibility="{Binding Path=ManagerFullHist,
Source={StaticResource mainWinResource},
Converter={StaticResource boolItemsConverter}}"/>
データグリッドでこれを解決する方法について何か提案はありますか?
役立つ可能性のあるコードを省略した場合はお知らせください。