أوامر سيلفرلايت عبر موشور، والحصول على وسائط حدث للحدث؟

StackOverflow https://stackoverflow.com/questions/1047858

سؤال

ولقد نموذج بيانات في SL3 الذي يستخدم المنشور أوامر مع السلوك المرفقة لمحاصرة الأحداث.

(وإلى حد ما بإحكام يلي هذا بلوق وظيفة: <وأ href = "http://blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607" يختلط = "نوفولو noreferrer" > http://blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607 )

وأساسا، كل شيء التوصيل وتعمل بشكل جيد، ولكن في viewmodel، لا أستطيع أن أرى كيف يمكن الوصول إلى وسائط حدث للحدث.

في منشئ VM يمكنني تحديد الأمر المفوض:

this.EditEnded = new DelegateCommand<object>(o => {
    //how can I tell if the button clicked was cancel or save?
}

ولكن أنا بحاجة إلى الوصول إلى الخاصية DataFormItemEditEndedEventArgs لذلك يمكنني تحديد ما يجب القيام به؟ أريد أن تنفيذ إجراءات مختلفة تبعا إذا كان المستخدم إلغاء أو ارتكبت.

هل كانت مفيدة؟

المحلول

لتحصل المعلمة إلى الوراء، هل يمكن تعديل CommandBehaviorBase فئة مشتقة من هذا القبيل:

private void ItemEditEnded(object sender, DataFormItemEditEndedEventArgs e)
{
     this.CommandParameter = e.EditAction;
     ExecuteCommand();
}

وهذا من شأنه أن يبعث EditAction (أو أي شيء آخر تريد) إلى CommandDelegate. في هذه الحالة، وكنت لا إضافة خاصية المرفقة للمعلمة. تعديل صفك الملكية تعلق بشكل مناسب (يستبعد CommandParameter). أنا لست في حالة حب مع هذا النهج (يبدو كيندا غير قياسي)، وأنا أتساءل عما إذا كان شخص آخر لديه اقتراح بديل.

وأعني، هل يمكن دائما إضافة أحداث لأنواع مختلفة من الأحداث (واحد لارتكابها، وما إلى ذلك)، وهذا هو أكثر من ذلك بقليل نقية، لكنه يعني الكثير من التعليمات البرمجية إضافية. هل يمكن أن تفلت من العقاب في هذه الحالة، ولكن لغيرها من الأحداث، فإنه يصبح من المستحيل (التواصل إحداثيات الماوس أو شيء مثير للسخرية).

الفيديو على بريزم أوامر . صفقات مع المعلمات أكثر ثابتة راجع قسم "معلمات القيادة" لكيفية فرز على أساس أساليب خاصية إرفاق ثابتة.

<Button Content="Save"
        HorizontalAlignment="Center"
        VerticalAlignment="Bottom"
        cal:Click.Command="{Binding GetCompanyData}"
        cal:Click.CommandParameter="SaveButton"
        />

نصائح أخرى

وربما يجب عليك أن يعلن أوامر منفصلة (حفظ القيادة والغاء القيادة) لأزرار وإجراءات منفصلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top