Databinding/Triggers를 통해 Tabitem의 "가시성"을 선택적으로 설정하려면 어떻게해야합니까?
-
08-07-2019 - |
문제
속성 (blahtype)이 1으로 설정되고 0으로 설정된 경우 표시되면 숨겨져야하는 탭 페이지가 있습니다. 이것이 나입니다. 원하다 할 것:
<TabItem Header="Blah">
<TabItem.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</TabItem.Triggers>
</TabItem>
문제는이 오류가 발생한다는 것입니다.
"Triggers collection members must be of type EventTrigger"
그 오류를 Google하면 볼 수 있습니다 WPF 박사는 오류를 설명합니다. 내가 여기서 달성하려는 일을 할 수있는 깨끗한 방법이 있습니까?
해결책
컨트롤의 트리거 컬렉션은 현재 EventTriggers 만 지원한다고 생각합니다. Datatrigger를 사용하려면 단순히 스타일 내에 배치하려면 예를 들어 다음과 같이합니다.
<TabItem Header="Blah">
<TabItem.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabItem.Style>
</TabItem>
다른 팁
글쎄, 당신은 트리거를 사용하여 그렇게 할 수 없습니다 (데이터 emplate, controlTemplate 또는 스타일 안에 있지 않는 한).
바인딩을 사용하여 수행 할 수 있습니다. 0/1 사이에서 Visible/Hidden으로 변환되는 사용자 정의 ValueConverter를 작성해야하며 가시성 속성을 Blhatype 속성에 바인딩 할 수 있습니다.
또는 코드의 가시성을 설정하고 XAML 기반 접근법 (내가 한 일)을 포기할 수 있습니다.
제휴하지 않습니다 StackOverflow