Trigger-Auflistungsmember müssen vom Typ EventTrigger sein
Habe ich ein UserControl erstellt, die der folgenden ähnelt:
<UserControl>
<StackPanel Orientation="Vertical">
<StackPanel x:Name="Launch" Orientation="Horizontal" Visibility="Collapsed">
<!-- Children here -->
</StackPanel>
<ToggleButton x:Name="ToggleLaunch" IsChecked="False" Content="Launch" />
</StackPanel>
</UserControl>
Ich habe versucht, einen DataTrigger, um den 'Start' StackPanel werden sichtbar, wenn der ToggleButton aktiviert ist, und bleiben brach sonst. Aber zur Laufzeit bekomme ich die Fehlermeldung, "Fehlgeschlagen Initialisierung des Objektes (ISupportInitialize.EndInit). Trigger-Kollektion, und die Mitglieder müssen den Typ "EventTrigger". Ich habe versucht, indem Sie ihn an den trigger-Sammlung von UserControl und StackPanel-ohne Erfolg. Mein trigger XAML-Code sieht wie folgt aus:
<DataTrigger Binding="{Binding ElementName=ToggleLaunch, Path=IsChecked}" Value="True">
<Setter TargetName="Launch" Property="UIElement.Visibility" Value="Visible" />
</DataTrigger>
InformationsquelleAutor der Frage Richard McGuire | 2009-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom MSDN Docs, wie pro die (leicht umformuliert) Antwort von Richard C. McGuire:
Zum Beispiel, wenn Sie versuchen, fügen Sie einen trigger, um eine
TextBlock
es wird dieser Fehler generiert:Warum? Ein
Trigger
können nur platziert werdenStyle
,ControlTemplate
oderDataTemplate
, und wir werden versuchen, es direkt in einerTextBlock
.In diesem Fall, die Lösung ist einfach: nur wickeln Sie die trigger in einem Stil, dann platzieren Sie diesen Stil innerhalb der
TextBlock
, und der Fehler wird verschwinden.Hier ist der Fehler generiert XAML - vor das Update:
Hier ist der XAML - nach das Update:
Hier ein Beispiel-screenshot zeigt, dass, wenn wir geben Sie
GoGreen
, fließt der text grün:... und wenn wir etwas anderes, wird der text standardmäßig rot:
Gibt es jede Menge Kostenlose material auf der web-über WPF-Trigger, und alle von Ihnen zu tun, einen guten job zu erklären, das Konzept und diese Seite war die, aus der penny-Tropfen für mich.
InformationsquelleAutor der Antwort Contango
Verwaltet, um es herauszufinden. Habe vergessen, dass DataTriggers gemeint sind, für Stil, ControlTemplate und DataTemplate pro die MSDN Docs.
Lösung war die Verwendung eines EventTrigger als Fehlermeldung angezeigt. Meine Lösung war folgende:
Gehen Weg halten, markieren diese als die Antwort bei jemand anderes hat eine andere Lösung.
InformationsquelleAutor der Antwort Richard McGuire
Könnte man auch binden die Sichtbarkeit in Ihrem stackpanel-Steuerelement, um die IsChecked-Eigenschaft in der ToggleButton. Sie müssen Sie verwenden eine benutzerdefinierte ValueConverter. Hier ist eine, die ich online gefunden:
InformationsquelleAutor der Antwort mdm20
Dies kann hoffnungslos veraltet, aber die folgende funktioniert für mich. Es könnte helfen, die Menschen laufen in das problem mit: "Trigger-Kollektion, und die Mitglieder müssen den Typ "EventTrigger"
Kapselung "was Sie kontrollieren wollen" in einem Control-Objekt ermöglicht die Verwendung der Steuern.Vorlage zu verwenden, keine trigger, die Sie wollen. Auf diese Weise können Sie mit dem (data) - Trigger direkt im XAML-Code, wo Sie wollen, ohne die Definition einer statischen Stil oder ein komplett neues UserControl.
InformationsquelleAutor der Antwort Marko