Wie ein Enum-Wert in CommandParam in XAML haben
-
29-09-2019 - |
Frage
Ich habe folgende Enumeration, die einen Zustand der Benutzeroberfläche darstellen (ich es verwenden aktivieren und deaktivieren UI-Elemente):
enum Mode
{
EDIT, RUN, REVIEW
}
Ich möchte Mode.EDIT auf Befehl in CommandParam weitergeben müssen:
<Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}"
CommandParameter="{StaticResource local:Mode.RUN}" />
Aber ich habe keine Ahnung, wie es zu erklären. Wie Sie in der Schaltfläche Erklärung sehen, ich versuche zu verwenden Static , aber es funktioniert nicht. Ich bin ganz neu in SL4 und C #, so nehme ich an, dass ich etwas verpasst haben.
Lösung
Ich habe eine Lösung gefunden. Ich habe in meinem MyViewModel
erstellt (mein Datacontext ) 3 öffentliche Attribute (vom Typ Mode) und sie im Konstruktor initialisiert werden (mit Werten EDIT RUN , REVIEW ). Als nächstes habe ich sie in XAML als eine normale Eigenschaft eines DataContext
gebunden:
CommandParameter="{Binding Path=EDIT}
class MyViewModel
{
public Mode EDIT {set; get;}
public Mode RUN {set; get;}
public Mode REVIEW {set; get;}
MyViewModel()
{
EDIT = Mode.EDIT;
...
}
}
Andere Tipps
In WPF wir etwas tun können (möglicherweise nicht in SL) -
<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />
prüfen diese Frage, um weitere Informationen - Übergabe eines ENUM-Wert als Befehlsparameter von XAML
in Silverlight-x: Statische nicht funktioniert, so dass wir etw wie dies tun können:
<Button Command="{Binding Path=ChangeMode}">
<Button.CommandParameter>
<Mode>RUN</Mode>
</Button.CommandParameter>
</Button>