“可視性”を選択的に設定するにはどうすればよいですか? 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で検索すると、 Dr。 WPFがエラーを説明します。ここで私が達成しようとしていることを行うきれいな方法はありますか?

役に立ちましたか?

解決

コントロールのTriggersコレクションは、現在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>

他のヒント

さて、トリガーを使用してそれを行うことはできません(DataTemplate、ControlTemplate、またはStyle内にいる場合を除く)。

バインディングを使用してそれを行うことができます。0/ 1からVisible / Hiddenに変換するカスタムValueConverterを記述する必要があります。その後、VisibilityプロパティをBlhaTypeプロパティにバインドできます。

または、コードで可視性を設定し、XAMLベースのアプローチをあきらめることができます(私がしたことです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top