Binden Sie die DataGridTextColumn-Sichtbarkeitseigenschaft in WPF
Ich habe ein Datagrid, dessenItemsSource
bindet an aCollectionViewSource
.
In jeder Spalte gebe ich diePath
Eigenschaft der Bindung, um die anzuzeigenden spezifischen Informationen abzurufen.
Was ich tun möchte, ist, einige der Spalten mit einem Ankreuzfeld umzuschalten, wenn der Benutzer mehr Info wünscht. Dazu muss ich die Visibility-Eigenschaft an den Wert des Kontrollkästchens binden (mit einem Konverter), aber ich bin mir ziemlich sicher, dass der Datenkontext der Spalte die Bindung beeinträchtigt.
<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>
Ich brauche das Kontrollkästchen auch in meinem Ansichtsmodell, also habe ich esIsChecked
Eigenschaft, die an eine Eigenschaft in meinem ViewModel gebunden ist
<CheckBox x:Name="IncludeFullHist" IsChecked="{Binding Path=ManagerFullHist }" />
Für andere Elemente auf meiner Seite konnte ich Sichtbarkeitsbindungen mit einer der beiden folgenden Methoden verknüpfen, aber beide scheinen nicht zu funktionieren, wenn ich sie in das Datagrid kopiere:
<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}}"/>
Irgendwelche Vorschläge, wie ich das im Datagrid lösen kann?
Bitte lassen Sie mich wissen, wenn ich Code ausgelassen habe, der möglicherweise hilfreich sein könnte.