我有一個數據網格,其ItemsSource
綁定到CollectionViewSource
。
在每一列中,我指定綁定的Path
屬性以獲取要顯示的特定信息。在WPF中綁定DataGridTextColumn可見性屬性
如果用戶想要更多信息,我想要做的是用複選框切換一些列。爲此,我需要將可見性屬性綁定到複選框的值(使用轉換器),但我很確定該列的數據上下文干擾綁定。
<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
屬性綁定到屬性上我的ViewModel
<CheckBox x:Name="IncludeFullHist" IsChecked="{Binding Path=ManagerFullHist }" />
對於我的網頁上的其他元素,我已經能夠使用以下兩種方法中的任何一種方法連接可見性綁定,但在將它們複製到數據網格中時似乎都不起作用:
<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。我已經嘗試把「代理」資源放在我的數據網格和我的用戶控件中,並嘗試綁定到'Path = DataContext.ManagerFullHist'和'ElementName = IncludeFullHist'的IsChecked'屬性,並且這些都不起作用。我的控件的datacontext是否搞亂了事情? – KyleMit
@Rachel,再次感謝您的回答。我得到了它的工作。這個問題對我來說太愚蠢了,因爲我試圖通過給它一個x:Key屬性(' '')來在其他解決方法之一中查看DataContext,以某種方式干擾數據上下文。無論哪種方式,解決方案的工作原理如下。 謝謝! –
KyleMit
很高興你的工作:) – Rachel