WPF ListBox of Buttons: how to change selected item on click with XAML -


मेरे पास templated ListBox :

  & lt; ListBox ग्रिड। रोल = "0" ग्रिड। कॉलम = "1" पृष्ठभूमि = "पारदर्शी" बॉर्डरटिचनेस = "0" x: नाम = "मुख्य मेनू" आइटम स्रोत = "{बाध्यकारी स्रोत = {x: स्थैतिक स्थानीय: मेनू कॉन्फ़िफ.मुख्यमेनू}, मोड = वनटाइम} "आईएसआईसीननाइज्ड विथ कंटेंटआईटीम =" ट्रू "& gt; & LT; ListBox.ItemContainerStyle & gt; & Lt; शैली TargetType = "ListBoxItem" & gt; & Lt; इवेंटसैटर इवेंट = "पूर्वावलोकनसामाज़" हैंडलर = "चयनकूर्तइटम" / & gt; & Lt; / शैली & gt; & LT; /ListBox.ItemContainerStyle> & LT; ListBox.ItemsPanel & gt; & LT; ItemsPanelTemplate & gt; & Lt; स्टैकपैनेल ओरिएंटेशन = "क्षैतिज" & gt; & lt; / स्टैकपैनेल & gt; & Lt; / ItemsPanelTemplate & gt; & LT; /ListBox.ItemsPanel> & LT; ListBox.ItemTemplate & gt; & LT; DataTemplate & gt; & LT; बटन & gt; & LT; StackPanel & gt; & Lt; छवि स्रोत = "{बाध्यकारी आइकन}" मैक्सहिट = "32" मैक्सव्यूथ = "32" / & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "{बाध्यकारी लेबल}" / & gt; & Lt; / StackPanel & gt; & Lt; / बटन & gt; & Lt; / DataTemplate & gt; & LT; /ListBox.ItemTemplate> & Lt; / ListBox & gt;  

चयनित आइटम मैन्युअल रूप से इसके पीछे कोड के साथ अपडेट होता है:

  निजी शून्य selectCurrentItem (ऑब्जेक्ट प्रेषक, MouseButtonEventArgs ई) {ListBoxItem item = (ListBoxItem) प्रेषक; Item.Is चयनित = सच; }  

क्या ऐसा करने का एक तरीका है (बटन क्लिक पर चयनित आइटम अपडेट करें) केवल XAML के साथ?

आमतौर पर आप अपने DataTemplate को स्टाइल करते हैं और एक बटन की तरह प्रतिक्रिया दें, यदि वह प्रभाव आप चाहते हैं जैसे

  & lt; ListBox .ItemTemplate & gt; & LT; DataTemplate & gt; & Lt; बॉर्डर बॉर्डर ब्रश = "ब्लैक" बॉर्डरटीक्साइज = "3" कॉर्नररेडिया = "10" पृष्ठभूमि = "# एफएफडी 6 डी 3 डी 3" मार्जिन = "5" & gt; & Lt; सीमा x: नाम = "myborder" BorderBrush = "# FFD6D3D3" बॉर्डरटिकनेस = "4" कॉर्नररेडिया = "10" पैडिंग = "2" & gt; & LT; Border.Background & gt; & Lt; LinearGradientBrush स्टार्टपॉईंट = "0.5,0" एंडपॉईंट = "0.5.1" & gt; & Lt; GradientStop color = "# FFA5A5A5" ऑफसेट = "1" / & gt; & Lt; GradientStop रंग = "व्हाइट" / & gt; & Lt; / LinearGradientBrush & gt; & LT; /Border.Background> & LT; StackPanel & gt; & Lt; छवि स्रोत = "{बाध्यकारी आइकन}" मैक्सहिट = "32" मैक्सव्यूथ = "32" / & gt; & Lt; TextBlock x: नाम = "TxtContent" टेक्स्ट = "{बाध्यकारी लेबल}" / & gt; & Lt; / StackPanel & gt; & Lt; / बॉर्डर & gt; & Lt; / बॉर्डर & gt; & LT; DataTemplate.Triggers & gt; & Lt; DataTrigger बाध्यकारी = "{बाध्यकारी पथ = IsSelected, RelativeSource = {रिलेटिवसॉर मोड = FindAncestor, AncestorType = {x: TypeBoxItem}}}" मान = "सत्य" & gt; & Lt; सेटर लक्ष्यनाम = "myborder" संपत्ति = "पृष्ठभूमि" & gt; & LT; Setter.Value & gt; & Lt; LinearGradientBrush स्टार्टपॉईंट = "0.5,1" एंडपॉईंट = "0.5,0" & gt; & Lt; GradientStop color = "# FFA5A5A5" ऑफसेट = "1" / & gt; & Lt; GradientStop रंग = "व्हाइट" / & gt; & Lt; / LinearGradientBrush & gt; & LT; /Setter.Value> & Lt; / सेटर & gt; & Lt; सेटर लक्ष्यनाम = "टेक्सटीकंटेंट" प्रॉपर्टी = "रेंडरट्रासफॉर्म" & gt; & LT; Setter.Value & gt; & Lt; अनुवाद ट्रांसफॉर्म वाई = "2.0" / & gt; & LT; /Setter.Value> & Lt; / सेटर & gt; & Lt; / DataTrigger & gt; & LT; /DataTemplate.Triggers> & Lt; / DataTemplate & gt; & LT; /ListBox.ItemTemplate>   

आप SelectedItem के लिए डिफ़ॉल्ट स्टाइल को ओवरराइड करने के लिए ItemContainerStyle सेट भी कर सकते हैं :

 < कोड> & lt; ListBox.ItemContainerStyle & gt; & Lt; शैली TargetType = "{x: Type ListboxItem}" & gt; & Lt; सेटर संपदा = "खाका" & gt; & LT; Setter.Value & gt; & Lt; ControlTemplate TargetType = "{x: प्रकार सूचीबॉक्स आईटीएम}" & gt; & Lt; सामग्रीप्रदर्शक / & gt; & Lt; / ControlTemplate & gt; & LT; /Setter.Value> & Lt; / सेटर & gt; & Lt; / शैली & gt; & LT; /ListBox.ItemContainerStyle>  

Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -