मुझे यकीन है यह कई बार से अधिक उत्तर दिया गया है में एक ApplicationCommand संभाल, लेकिन ...WPF - ViewModel
जहां एक UserControl पर एक बटन अपने आदेश संपत्ति ढूँढें की तरह कुछ करने के लिए सेट है एक साधारण स्थिति के लिए (ApplicationCommands ढूँढें) ViewModel उस कमांड को कैसे संभालेगा? मैं आमतौर पर कमांड बाइंडिंग के साथ वायर्ड हैंडलर को वायर्ड करता हूं जो UIElement पर कमांडबिंडिंग संग्रह में जोड़ा जाता है, लेकिन मेरा व्यूमोडेल UIElement (इसे चाहिए?) से प्राप्त नहीं होता है। आदेश स्वयं निष्पादित होने पर सूचित करने के लिए घटनाओं का पर्दाफाश नहीं करते हैं, इसलिए मुझे यह जानकारी प्राप्त करने के लिए कहां से तार करना चाहिए?
संपादित करें: यदि संभव हो तो समस्या को हल करने के लिए मैं स्टॉक डब्ल्यूपीएफ का उपयोग करना चाहता हूं। मुझे पता है कि इस तरह की चीज के लिए कई उपलब्ध ढांचे हैं लेकिन कोड को सरल रखना चाहते हैं।
EDIT2: कुछ नमूना कोड सहित।
<UserControl>
<UserControl.DataContext>
<local:MyViewModel/>
</UserControl.DataContext>
<Button Command="Find"/>
</UserControl>
कहाँ:
class MyViewModel
{
// Handle commands from the view here.
}
मैं UserControl जो निष्पादित संभाल होगा करने के लिए एक CommandBinding जोड़ सकता है, तो MyViewModel में एक काल्पनिक ढूँढें विधि है जो वास्तविक काम करता है कहते हैं, लेकिन यह है कि अतिरिक्त और अनावश्यक कोड है। अगर मैं ViewModel को ढूँढें कमांड को संभाला तो मैं चाहूंगा। एक संभावित समाधान होगा MyViewModel UIElement से प्राप्त होगा हालांकि यह काउंटर अंतर्ज्ञानी लगता है।
मैं ढीला युग्मन पसंद करूंगा इसलिए मैं एक ऐसा उत्तर ढूंढ रहा हूं जो उपयोगकर्ता नियंत्रण से अलग वर्ग में कमांड को संभालने का तरीका दिखाता है। –
क्या आप सभी स्रोतों के लिए 'ApplicationCommands.Find' को संसाधित करना चाहते हैं? – Vlad
स्पष्ट करने के लिए कुछ कोड जोड़ा गया है जहां मैं कमांड निष्पादन को संभालना चाहता हूं - मैं सामान्य एमवीवीएम दर्शन को ध्यान में रखते हुए UserControl में नहीं, ViewModel में कमांड को संभालना चाहता हूं। –