Questo comportamento mi sembra incredibilmente strano e presumo di fare qualcosa di sbagliato per ottenerlo. Ho un ContentControl
che utilizza un DataTemplet per eseguire il rendering di un controllo TabControl. Voglio un'immagine da visualizzare quando non ci sono tabulazioni aperte e ci si nasconde quando ci sono. Ma ecco il problema:WPF Trigger non imposta la proprietà se impostato nell'elemento
<Image Name="image1" Stretch="Uniform" Visibility="Hidden" Source="/Affinity;component/Images/affinity_logo.png">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, ElementName=tabcontrolworkspaces}"
Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
Questo non funziona ... una specie di.
L'ho provato su Visiblity e Margin (solo per essere sicuro). Questo trigger modificherà la proprietà, a meno che tale proprietà non sia definita nei tag Image
. Se lo è, il trigger non aggiornerà quella proprietà. Quindi, se non definisco una visibilità per l'immagine e il trigger lo nasconde, funziona. Il problema è che l'impostazione predefinita è Visibile e che il trigger deve mostrarlo quando value = 0 e nasconderlo altrimenti.
Perché il trigger non sovrascrive le proprietà che sono definite in modo esplicito? Non è questo il suo scopo?
Hai provato a impostarlo dall'altra parte? Come in, quando Value! = "0" imposta la visibilità su non visibile? – mydogisbox
Puoi persino usare! = In un valore di trigger? – Tyrsius
Non direttamente, ma con un po 'di sforzo si può fare. @CodeNaked ha una soluzione migliore. Ecco la soluzione indesiderabile. http://blogs.msdn.com/b/mikehillberg/archive/2008/09/30/comparabledatatrigger.aspx – mydogisbox