Databinding/Triggers를 통해 Tabitem의 "가시성"을 선택적으로 설정하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/302312

  •  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 기반 접근법 (내가 한 일)을 포기할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top