Vincular propriedade de visibilidade DataGridTextColumn no WPF
Eu tenho um datagrid cujaItemsSource
liga-se a umCollectionViewSource
.
Em cada coluna especificoPath
propriedade da ligação para obter as informações específicas a serem exibidas.
O que eu gostaria de fazer é alternar algumas das colunas com uma caixa de seleção se o usuário quiser mais informações. Para fazer isso, preciso vincular a propriedade visibility ao valor da caixa de seleção (com um conversor), mas tenho certeza de que o contexto de dados da coluna está interferindo na vinculação.
<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>
Eu preciso da caixa de seleção no meu viewmodel também, então eu tenho o seuIsChecked
propriedade ligada a uma propriedade no meu ViewModel
<CheckBox x:Name="IncludeFullHist" IsChecked="{Binding Path=ManagerFullHist }" />
Para outros elementos em minha página, consegui ligar ligações de visibilidade com um dos dois métodos a seguir, mas nenhum deles parece funcionar quando eu os copio no datagrid:
<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}}"/>
Alguma sugestão sobre maneiras que eu posso resolver isso no datagrid?
Por favor, deixe-me saber se eu omiti qualquer código que poderia ser potencialmente útil.