हां, आप फोकस्ड एलीमेंट से जुड़ सकते हैं। की तरह कुछ:
<Button ...
CommandParameter="{Binding (FocusManager.FocusedElement), RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
आपका ध्यान स्कोप के आधार पर आप एक और तत्व को विंडो को बदलने की जरूरत हो सकती है।
लेकिन व्यक्तिगत रूप से, मैं कमांड के हैंडलर को यह देखने के लिए सेटअप करता हूं कि पैरामीटर शून्य है या नहीं। यदि ऐसा है तो मैं प्रोग्रामेटिक रूप से FocusManager.FocusedElement
प्राप्त करूंगा।
var element = parameter as DataGrid;
if (element == null)
element = FocusManager.FocusedElement as DataGrid.
आप संबंधित डेटाग्रिड प्राप्त करने के लिए आवश्यक दृश्य पेड़ को भी खोज सकते हैं।
+1 का सबसे अच्छा विचार नहीं है। लेकिन कोड भाग के लिए, यदि मैं एमवीवीएम पैटर्न का पालन कर रहा हूं और मेरा कमांड मेरे व्यूमोडेल में रहता है, तो मुझे वहां से अपनी यूआई ऑब्जेक्ट्स तक नहीं पहुंचना चाहिए। सही? –
@ आरवी 1 9 87- यदि आप इसे कमांड पैरामीटर के माध्यम से पास करते हैं तो आप अभी भी यूआई ऑब्जेक्ट तक पहुंच रहे हैं :) – CodeNaked
एक्सएमएल दृष्टिकोण मेरे लिए काम नहीं करता है, लेकिन यह फ्लुएंट रिबन के साथ जारी हो सकता है जिसका मैं उपयोग करता हूं। दृष्टिकोण के पीछे कोड काम करता है, लेकिन आपको फ़ंक्शन GetFocusedElement का उपयोग करना होगा और इसे मुख्य विंडो के संदर्भ में पास करना होगा – Twelve