Mam TextBox ze stylem, który ma DataTrigger który zmienia tekst w następujący sposób:WPF Style DataTrigger z wiązania się DataContext nie działa
<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>
Ale to nie działa, nigdy tekst zmienia się na „bar ". Przetestowałem używając innego TextBlocka z Text = "{Binding MyBool}" i tekst ten zmienia się z "False" na "True". Snoop nie ujawnia żadnych błędów, które widzę i nie ma nic w wynikach.
To pytanie może wydawać się duplikatem WPF Trigger binding to MVVM property, ale mój kod nie różni się od zaakceptowanej odpowiedzi (http://www.thejoyofcode.com/Help_Why_cant_I_use_DataTriggers_with_controls_in_WPF.aspx, sekcja "Używanie stylu") w każdy odpowiedni sposób. Używanie DataTemplate zgodnie z sugestią w rzeczywistej odpowiedzi wydaje się błędne, ponieważ chcę tylko, aby to zastosowanie do pojedynczego TextBlock, ale jeśli jest prawidłowe, nie jestem pewien, jak napisać DataTemplate do tego ...
EDYCJA :
to właśnie właściwość jestem wiązania się wygląda następująco:
public bool MyBool
{
get { return _myBool; }
set
{
if (_myBool== value)
return;
_myBool= value;
NotifyPropertyChanged();
}
}
private bool _myBool;
Pierwszą rzeczą, którą trzeba zrobić, to włączyć się komunikaty debugowania dla wiązania z danymi: http://i.stack.imgur.com/MF8i5.png Następnie ponownie uruchomić i sprawdzić okno wyjściowe i zobacz, jakie są błędy. Mogłeś to zrobić; fakt, że wspomniałeś snoop wskazuje, że jesteś daleko przed plecakiem. Prawdopodobnie potrzebna jest odpowiednia część VM w pytaniu. – Will
Sprawdziłbym okno wyjściowe pod kątem błędów. Może to być coś tak prostego, jak wiązanie jest zawalone. – gleng
Tak, jak już wspomniałem: "nic nie ma na wyjściu". Ostrzeżenia dotyczące błędów wiązania są włączone. Zaktualizuję główny post z właściwością ... ale jak już wspomniałem, mogę powiązać i wyświetlić wartość tej samej właściwości, dobrze, po prostu nie działa w wyzwalaczu. – moggizx