Trigger, Basierend auf den Eigenschaften von DataContext
Angenommen, ich möchte ein - /ausblenden Elemente, basierend auf den Werten von Eigenschaften, die von DataContext, wie kann ich erreichen, es?
//In MainWindow.xaml.cs: DataContext of MainWindow.xaml
public int Mode { get; set; }
In XAML möchte ich zeigen, ausblenden von Elementen auf der Grundlage der Mode
. Wie kann ich machen das unten arbeiten? Oder was ist die angemessene Art und Weise der Umsetzung dieser?
<StackPanel>
<StackPanel.Triggers>
<Trigger Property="Mode" Value="1">
<Setter TargetName="txt1" Property="Visibility" Value="Visible" />
<Setter TargetName="txt2" Property="Visibility" Value="Collapsed" />
<Setter TargetName="txt3" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="Mode" Value="2">
<Setter TargetName="txt1" Property="Visibility" Value="Collapsed" />
<Setter TargetName="txt2" Property="Visibility" Value="Visible" />
<Setter TargetName="txt3" Property="Visibility" Value="Collapsed" />
</Trigger>
</StackPanel.Triggers>
<TextBlock Text="TextBlock 1" x:Name="txt1" />
<TextBlock Text="TextBlock 2" x:Name="txt2" />
<TextBlock Text="TextBlock 3" x:Name="txt3" />
</StackPanel>
Aktuell ist der Fehler ich erhalte, ist "Eigenschaft '- Modus' wurde nicht gefunden in Art 'StackPanel'. D:\tmp\WpfApplication1\TriggersAndProperties\MainWindow.xaml"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
DataTriggers
wenn Sie möchten, löst die auf Bindungen. Problem ist,DataTriggers
sind nur auf style und template, so dass Sie brauchen, um zu definieren, wie dies:Andere Lösung wäre, eine
IValueConverter
wandelt die int vonMode
zu denVisibility
Sie möchten, und wenden Sie es direkt auf jedem TextblockVisibility
Eigenschaft.Beachten Sie, dass Dean Kreide, die Antwort bleibt gültig: Sie haben eine
DependencyProperty
oder implementierenINotifyPropertyChanged
wenn Sie möchten, dass änderungen aufMode
auslösen.Ihre Eigenschaft 'Mode' muss eine Abhängigkeitseigenschaft, um so genutzt werden: