Wie kann ich gezielt die „Sichtbarkeit“ ein TabItem über Databinding / Triggers eingestellt

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

  •  08-07-2019
  •  | 
  •  

Frage

Ich habe eine Registerkarte, die ausgeblendet werden sollen, wenn eine Eigenschaft (BlahType) auf 1 gesetzt ist und wenn auf 0 gesetzt gezeigt Dies ist, was I WILL zu tun:

<TabItem Header="Blah">
    <TabItem.Triggers>
        <DataTrigger Binding="{Binding BlahType}" Value="0">
            <Setter Property="TabItem.Visibility" Value="Hidden" />
        </DataTrigger>
    </TabItem.Triggers>
</TabItem>

Das Problem ist, bekomme ich diesen Fehler:

"Triggers collection members must be of type EventTrigger"

Wenn Sie diese Fehler googeln, finden Sie, dass Dr. WPF erklärt den Fehler . Gibt es eine saubere Art und Weise zu tun, was ich versuche, hier zu erreichen?

War es hilfreich?

Lösung

Ich glaube, dass die Trigger Sammlung einer Kontrolle nur noch unterstützt Eventtriggers. Wenn Sie einen Datatrigger verwenden möchten einfach legen Sie sie in einem Stil, für Ihr Beispiel:

<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>

Andere Tipps

Nun können Sie das nicht tun, mit Trigger (nicht, wenn Sie in einem Datatemplate, Control oder einen Style sind).

Sie können es eine verbindlich Sie verwenden, müssen Sie eine benutzerdefinierte Valueconverter schreiben, die zwischen 0/1 bis Visible / versteckt und dann können Sie binden die Visibility-Eigenschaft auf die BlhaType Eigenschaft übersetzen.

Oder Sie können einfach die Sichtbarkeit im Code festgelegt und auf einem XAML-basierten Ansatz geben (das, was ich getan hätte).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top