पर एमवीवीएम बाइंडिंग कमांड मैं WPF में मेन्यूइटम को कमांड करने की कोशिश कर रहा हूं। मैं वही विधि का उपयोग कर रहा हूं जो मेरे सभी अन्य कमांड बाइंडिंग के लिए काम कर रहा है, लेकिन मुझे पता नहीं चल रहा है कि यह यहां क्यों काम नहीं करता है।संदर्भमेनू आइटम
मैं इस समय इस तरह मेरे आदेशों बाध्यकारी हूँ:
Command = "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.MyCommand}"
यह जहां यह गलत है (यह एक UserControl के अंदर है)
<Button Height="40" Margin="0,2,0,0" CommandParameter="{Binding Name}"
Command = "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ConnectCommand}">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove" CommandParameter="{Binding Name}"
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.RemoveCommand}"/>
</ContextMenu>
</Button.ContextMenu>
...
बंधन की तरह काम करता है यह होना चाहिए पहले आदेश चला जाता है, लेकिन दूसरा कुछ भी करने से इंकार कर देता है। मैंने रिश्तेदार स्रोत के बजाय ElementName के माध्यम से इसे एक्सेस करने के लिए पूर्वजों के स्तर को बदलने और मेरे नियंत्रण का नामकरण करने का प्रयास किया है, लेकिन अभी भी कोई बदलाव नहीं है। यह कहता रहता है "संदर्भ के साथ बाध्यकारी के लिए स्रोत नहीं मिल रहा है ..."
मुझे क्या याद आ रही है?
मैं जाँच करने के लिए होगा, लेकिन MenuItem एक अलग पेड़ में हो सकता है, तो यह UserControl के बाद से तकनीकी रूप से यह नहीं मिल सकता है पूर्वजों नहीं (स्नूप यह पुष्टि कर सकता है कि मुझे यह सही याद है या नहीं)। अन्य कमांड बाइंडिंग्स (जैसे कि बटन कंट्रोल के लिए कमांड) के लिए, आप कमान = "{बाइंडिंग पथ = कनेक्ट कॉमांड}" क्यों नहीं कर सकते? बटन को UserControl से DataContext को विरासत में लेना चाहिए और इसलिए पूरे सापेक्ष स्रोत/FindAncestor वाक्यविन्यास की आवश्यकता नहीं है। – MetalMikester