이 CollectionViewSource
에 바인딩되는 DataGrid가 있습니다.
각 열에 바인딩의 Path
속성을 지정하여 표시 할 특정 정보를 가져옵니다.바인드 DataGridTextColumn WPF의 가시성 속성
사용자가 추가 정보를 원할 경우 체크 박스를 사용하여 일부 열을 토글하고 싶습니다. 이렇게하려면 visibility 속성을 (변환기가있는) 확인란의 값에 바인딩해야하지만 저는 열의 데이터 컨텍스트가 바인딩을 방해하고 있음을 확신합니다. 나는했습니다,
<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
속성이 내 페이지의 다른 요소의 내 뷰 모델
<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에서이 문제를 해결할 수있는 방법에 대한 제안이 있으십니까?
잠재적으로 도움이 될 수있는 코드가 누락 되었다면 알려주십시오. 클래스에 바인딩이 자신의 소스 찾을 수 없습니다
당신은 CellStyle
또는 DataGridColumn
의 HeaderStyle
에서 Visibility
및 Width
재산 같은 것들을 설정할 수 있도록
@Rachel 레이첼을 볼 수 있습니다, 귀하의 답변에 감사드립니다! 이것은 제가 겪고있는 정확한 문제입니다. 나는 더 가까이에서 느끼지만 바인딩은 여전히 작동하지 않습니다. 링크 된 기사에 따라'BindingProxy' 클래스를 설정했습니다. 내 사용자 정의 컨트롤에 대한 'DataContext'는 내 ViewModel 클래스로 설정되어 있고 DataGrid는 datacontext를 상속받습니다. 내 DataGrid와 사용자 컨트롤에 "프록시"리소스를 넣으려고 시도하고'Path = DataContext.ManagerFullHist' 및'ElementName = IncludeFullHist'의 IsChecked 속성에 바인딩을 시도했지만 그 중 아무 것도 수행하지 않았습니다. 내 컨트롤에 대한 datacontext 일을 엉망이야? – KyleMit
@Rachel, 다시 답변 해 주셔서 감사합니다. 나는 그것을 작동 시켰어. 문제는 내 다른 해결 방법 중 하나에서 DataContext에 x : Key 특성 (' ')을 부여하여 얻으려는 바보 같은 것이 었습니다. 어떻게 든 datacontext와 간섭하고있었습니다. 어느 쪽이든 솔루션은 게시 된대로 작동합니다. 감사합니다. –
KyleMit
다행 당신은 그것을 해결 :) – Rachel