كيفية الحصول على قيمة التعداد في CommandParam في XAML
-
29-09-2019 - |
سؤال
لديّ التعداد التالي الذي يمثل حالة واجهة المستخدم (أستخدمها لتمكين عناصر واجهة المستخدم وتعطيلها):
enum Mode
{
EDIT, RUN, REVIEW
}
أرغب في تمرير mode.edit إلى الأمر في CommandParam:
<Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}"
CommandParameter="{StaticResource local:Mode.RUN}" />
لكن ليس لدي أي فكرة عن كيفية إعلان ذلك. كما ترى في إعلان الزر ، أحاول استخدام StaticResource لكنه فشل. أنا جديد تمامًا على SL4 و C# لذلك أفترض أنني فاتني شيء ما.
المحلول
لقد وجدت الحل. لقد خلقت في بلدي MyViewModel
(لي datacontext) 3 سمات عامة (من وضع النوع) وتهيئتها في المُنشئ (مع القيم تعديل, يجري, إعادة النظر). بعد ذلك ، قمت بربطهم في XAML كخاصية عادية لـ a DataContext
:
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;
...
}
}
نصائح أخرى
في WPF ، يمكننا أن نفعل شيئًا كهذا (قد لا يعمل في SL) -
<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />
تحقق من هذا السؤال لمزيد من التفاصيل -تمرير قيمة التعداد كمعلمة أمر من XAML
في Silverlight X: Static لا يعمل حتى نتمكن من فعل STH مثل هذا:
<Button Command="{Binding Path=ChangeMode}">
<Button.CommandParameter>
<Mode>RUN</Mode>
</Button.CommandParameter>
</Button>