2009-05-08 14 views
5

पर आधारित ContextMenu पर मेनूइटम छुपाएं मुझे प्रोग्रामइटिक रूप से मेनूइटम को दिखाने/छिपाने की ज़रूरत है, ऐसा करने का सबसे अच्छा तरीका क्या होगा?WPF ऑब्जेक्ट प्रॉपर्टी

उत्तर

5

ठीक है, एक MenuItem जोड़ने के लिए आप इन पंक्तियों के साथ कुछ की आवश्यकता होगी:

var menuItem = new MenuItem() { Header = "Menu Name", Name = "Identifier", IsCheckable = true, IsChecked = visible }; 
menuItem.Click += new RoutedEventHandler(contextMenu_onClick); 
int position = contextMenu.Items.Add(menuItem); 

(लेकिन आप शायद पहले से ही इस मिल गया है)।

आपको संपत्ति में मेनू आइटम टाइप करने के कुछ तरीके की आवश्यकता होगी - लेकिन आपके आवेदन को देखे बिना मैं वास्तव में सबसे अच्छा तरीका सुझा सकता हूं। टैग संपत्ति है जो एक वस्तु को स्टोर करती है; यूआईडी संपत्ति जो एक स्ट्रिंग स्टोर करती है; नाम संपत्ति जो एक स्ट्रिंग भी स्टोर करती है।

जबकि:

menuItem.Visibility = Visibility.Visible; 

और

menuItem.Visibility = Visibility.Collapsed; 

आइटम की दृश्यता टॉगल चाहिए।

संपादित करें: संकुचित का उपयोग मेनू आइटम को छुपाएगा और मेनू में आरक्षित स्थान नहीं होगा - आप वास्तव में संदर्भ मेनू में खाली रिक्त स्थान नहीं चाहते हैं। (इस के लिए Botz3000 करने के लिए धन्यवाद)

अपने कोड में फिर

जहां संपत्ति के मूल्य बदल गया है आप मेनू आइटम आप लिंकेज मैं ऊपर वर्णित का उपयोग कर/छिपाने को दिखाने के लिए चाहते हैं खोजने के लिए करेंगे। एक बार जब आप आइटम है कि आप इसे मूल्य है स्विच कर सकते हैं: आप MenuItem छुपाना चाहते हैं

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible; 
+1

दृश्यता नहीं होगी। बेहतर होना बेहतर है? – Botz3000

+1

धन्यवाद - मैंने जवाब अपडेट किया है – ChrisF

0

आपको यकीन है? यह उसे निष्क्रिय करने, WPF के कमांडिंग ढांचे का उपयोग कर अधिक आम है:

<MenuItem Header="_MenuName" Command="{x:Static local:MyCommands.SomeCommand}" /> 

... 

<!-- In the menu item or any of its ancestors: --> 
<SomeControl.CommandBindings> 
    <CommandBinding Command="{x:Static local:MyCommands.SomeCommand}" Executed="Save_Executed" CanExecute="Save_CanExecture" /> 
</SomeControl.CommandBindings> 

WPF Save_CanExecute की bool परिणाम का उपयोग करेगा निर्धारित करने के लिए MenuItem के आदेश वर्तमान में निष्पादित कर सकते हैं, और सक्षम/तदनुसार को निष्क्रिय MenuItem

संबंधित मुद्दे