Come posso impostare selettivamente & # 8220; Visibilità & # 8221; di un TabItem tramite DataBinding / Trigger
-
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?
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).