Ho un TextBox con uno stile che ha un DataTrigger che cambia il testo, in questo modo:WPF Style DataTrigger con il legame di DataContext non funziona
<Grid>
<TextBlock Text="Foo">
<TextBlock.Style>
<Style BasedOn="{StaticResource TextStyle}" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding MyBool}" Value="True">
<Setter Property="Text" Value="Bar"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
Ma non funziona, il testo non cambia mai per "Bar ". Ho testato utilizzando un altro TextBlock con Text = "{Binding MyBool}" e questo testo cambia da "False" a "True". Snoop non rivela errori che posso vedere e non c'è nulla nell'output.
Questa domanda può sembrare un duplicato di WPF Trigger binding to MVVM property, ma il mio codice non sembra diverso dalla risposta accettata (http://www.thejoyofcode.com/Help_Why_cant_I_use_DataTriggers_with_controls_in_WPF.aspx, sezione "Uso di uno stile") in qualsiasi modo pertinente. E l'utilizzo di un DataTemplate come suggerito nella risposta effettiva sembra errato dal momento che voglio solo applicare a un singolo TextBlock, ma se è corretto, non sono sicuro di come scrivere un DataTemplate per questo ...
EDIT :
Questo è ciò che la proprietà che sto legame al assomiglia:
public bool MyBool
{
get { return _myBool; }
set
{
if (_myBool== value)
return;
_myBool= value;
NotifyPropertyChanged();
}
}
private bool _myBool;
La prima cosa che devi fare è alzare i messaggi di debug per l'associazione dati: http://i.stack.imgur.com/MF8i5.png Avanti, re-run e controllare la finestra di output e vedere quali errori ci sono. Potresti averlo fatto; il fatto che tu abbia parlato di ficcanaso indica che sei molto più avanti del pacco. Probabilmente hanno bisogno anche delle parti rilevanti della VM nella domanda. – Will
Controllerei la finestra di output per eventuali errori. Potrebbe essere qualcosa di semplice come il legame che viene incasinato. – gleng
Sì, come ho detto: "non c'è nulla nell'output". Gli avvisi per gli errori di associazione sono abilitati. Aggiornerò il post principale con la proprietà ... ma come ho già detto, posso legare e visualizzare il valore della stessa proprietà, ma non funziona nel trigger. – moggizx