У меня есть datagrid, у которого ItemsSource
привязывается к CollectionViewSource
.
В каждом столбце я указываю свойство привязки Path
для получения конкретной информации для отображения.Bind DataGridTextColumn Свойство видимости в WPF
Что я хотел бы сделать, это переключить некоторые столбцы с помощью флажка, если пользователь хочет получить больше информации. Для этого мне нужно привязать свойство видимости к значению флажка (с конвертером), но я уверен, что контекст данных столбца мешает привязке.
<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>
мне нужен флажок в моем ViewModel, так что у меня есть его свойство IsChecked
привязан к собственности на моем ViewModel
<CheckBox x:Name="IncludeFullHist" IsChecked="{Binding Path=ManagerFullHist }" />
Для других элементов в моей странице, Я удалось подключить привязки видимости с помощью одного из двух следующих способов, но ни один из них не работает, когда я копирую их в 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}}"/>
Любые предложения о способах, которыми я могу решить это в datagrid?
Пожалуйста, дайте мне знать, если я опустил код, который может быть потенциально полезен.
@Rachel Рахиль, спасибо за Ваш ответ! Это точная проблема, с которой я столкнулся. Я чувствую себя намного ближе, но привязка все еще не работает. Я создал класс 'BindingProxy' в соответствии с связанной статьей. «DataContext» для моего пользовательского элемента управления установлен в мой класс ViewModel, и мой datagrid наследует его datacontext. Я попытался поместить ресурс «proxy» в свой datagrid и мой пользовательский элемент управления и попытался привязать к 'Path = DataContext.ManagerFullHist' и к свойству' IsChecked' 'ElementName = IncludeFullHist', и ни одна из них не работает. Является ли datacontext для моего контроля запутыванием вещей? – KyleMit
@ Rachel, Еще раз спасибо за ваш ответ. Я заработал. Проблема заключалась в том, что на моем конце была какая-то глупость, где я пытался ухватить DataContext одним из моих других обходных решений, предоставив ему атрибут x: Key (' '), который каким-то образом мешал информационный тезис. В любом случае решение работает как отправлено. Спасибо! –
KyleMit
Рад, что вы все разобрались :) – Rachel