Come posso impostare selettivamente & # 8220; Visibilità & # 8221; di un TabItem tramite DataBinding / Trigger

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

  •  08-07-2019
  •  | 
  •  

Domanda

Ho una scheda che dovrebbe essere nascosta se una proprietà (BlahType) è impostata su 1 e visualizzata se impostata su 0. Questo è ciò che VOGLIO fare:

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

Il problema è che ottengo questo errore:

"Triggers collection members must be of type EventTrigger"

Se visualizzi questo errore su Google, vedrai che Dr. WPF spiega l'errore . C'è un modo pulito per fare ciò che sto cercando di ottenere qui?

È stato utile?

Soluzione

Credo che la raccolta Trigger di un controllo attualmente supporti solo EventTriggers. Se desideri utilizzare un DataTrigger, inseriscilo semplicemente in uno stile, ad esempio:

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

Altri suggerimenti

Bene, non puoi farlo usando i trigger (a meno che tu non sia all'interno di un DataTemplate, ControlTemplate o uno Style).

Puoi farlo usando un'associazione, dovrai scrivere un ValueConverter personalizzato che tradurrà tra 0/1 in Visibile / Nascosto e quindi puoi associare la proprietà Visibilità alla proprietà BlhaType.

Oppure puoi semplicemente impostare la Visibilità nel codice e rinunciare a un approccio basato su XAML (quello che avrei fatto).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top