Ich habe eine Listbox Elementvorlage, die visuelle Zustände enthält. Ich habe DisplayStateBehaviors, die die Zustände auf die Ein/Aus-Zustände festlegen. Meine Implementierung funktioniert nur 1/2. Bei der ersten Anzeige ist der Basiszustand unabhängig vom Wert im DataContext aktiv. Wenn sich die Daten im DataContext ändern, wird der richtige Status aktiviert.DisplayStateBehavior nicht zu Beginn Zustandsübergang in Listbox Elementvorlage
Wie bekomme ich den richtigen Zustand bei der ersten Anzeige der Listbox angezeigt.
Aus Sicherheitsgründen kann ich XAML- oder View-Model-Code nicht kopieren/einfügen.
Bearbeiten: Während ich den echten Code nicht kopieren/einfügen kann, reproduziert das folgende Skelett hoffentlich das Problem.
In einer global sichtbaren Ressourcendatei:
<DataTemplate x:Key="MyObjectItemTemplate">
<Grid>
<VisualStateManager.VisualStateGroups>
... blend goodness ...
</VisualStateManager.VisualStateGroups>
</Grid>
</DataTemplate>
Der Datenkontext wird in die Datenvorlage übergibt, indem sie es mit dem ItemsTemplate Attribute des listbox in der Haupt-UI-Zuordnung.
<ListBox ... ItemTemplate="{DynamicResource MyObjectItemTemplate}" .../>
Sie wissen nicht viel über DisplayStateBehaviors, aber mein erster Versuch, eine schnelle Lösung würde auf dem Grundstück InvokePropertyChanged sein die Datacontext in einer Zeit gebunden ist, wo Sie wissen, eingerichtet werden soll alles los ist. Wenn Ihr DisplayStateBehavior überhaupt von den Eigenschaften des Datenkontexts abhängig ist und gebunden ist, bevor das Datenkontextobjekt vollständig erstellt wurde, hat es keine weitere Möglichkeit, sich selbst zu aktualisieren, bis sich der Datenkontext erneut ändert. – Alain
Das war mein Plan, um dies zu hacken, aber es scheint nicht so, dass es nötig sein sollte. Das fühlt sich an wie ein Symptom für mich, Dinge falsch zu verstehen oder die falsche Methode zu verwenden, da dies in meinen Augen ein häufiger Anwendungsfall ist. Wenn mein Ansatz fehlerhaft ist, würde ich lieber "mach es richtig, einmal". – PatrickV
Dies ist ohne den Code schwer zu beantworten. Ich habe Fragen wie "was ist ein DisplayStateBehavior", "wie ist die Form des DataContext" und "wie wird der DataContext geliefert?". Es gibt viele Möglichkeiten, etwas falsch zu machen, aber es ist schwer, einen möglichen Fehltritt ohne den Code zu sehen. –