سؤال

لديّ التعداد التالي الذي يمثل حالة واجهة المستخدم (أستخدمها لتمكين عناصر واجهة المستخدم وتعطيلها):

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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top