दिलचस्प पोस्ट
मैं कैसे जांचूं कि एकाधिक कुंजी एक सिंगल पास में दिए गए हैं? मुझे कैसे पता लगा सकता है कि मेरे एंड्रॉइड डिवाइस पर कोई विशेष पैकेज मौजूद है? क्या "अतीत-द-अंत" सूचक एक गैर-सरणी प्रकार सी ++ में एक मान्य अवधारणा है? विंडोज पर चल रहे एमएक्स के लिए मेरी .emac फाइल कहां मिल सकती है? MySQL: टाइमस्टैम्प को अपडेट करने के बिना प्रविष्टि अद्यतन करना क्या मैं उपमांड उपनाम कर सकता हूँ? (`docker ps` के उत्पादन को छोटा करना) कैसे जावा में कुंजी के अनुसार मानचित्र मूल्यों को सॉर्ट करने के लिए जावा एनोटेशन सदस्यों के लिए किस प्रकार का उपयोग किया जा सकता है? साक्षात्कार प्रश्न: तीन एरे और ओ (एन * एन) सभी कॉल को संशोधित किए बिना रेट्रोफ़िट का उपयोग करके ओएथ टोकन ताज़ा करना पूंछ कॉल opcode उत्पन्न वरीयता स्क्रीन में टाइमपिकर जांचें कि तालिका मौजूद है या नहीं Python का उपयोग कर फ़ाइल को बदलना Jsonlite पैकेज के साथ JSON फ़ाइल पार्स करने में त्रुटि

लिस्ट बॉक्स आइटम वापसी स्ट्रिंग, जब DataTemplate बटन है

मैं एक WP 8.1 Silverlight ऐप का निर्माण कर रहा हूं I

मेरे पास स्ट्रिंग नामों का एक ObservableCollection है, जो एक ListBox के ItemsSource पर सेट है। ListBox में बटन के नाम क्या हैं ListBox मैं तब ListBox से बटन निकालना चाहता हूं, लेकिन रिटर्न मान टाइप string

Xaml कोड है:

 <ListBox x:Name="Game_ScrollViewer_online" Margin="41,104,128,6" SelectedValuePath="Current_game_button"> <ListBox.ItemTemplate> <DataTemplate> <Button x:Name="Current_game_button" Content="{Binding}" HorizontalAlignment="Center" Height="80" Margin="-14,6,-15,0" VerticalAlignment="Top" Width="210" Template="{StaticResource Button_CurrentLayout1}" RenderTransformOrigin="0.5,0.5" Foreground="#FFCBECCB" FontFamily="Times New Roman" Click="LoadGame_online" FontSize="16"> </Button> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 

मैं तब बटन तत्व निकालना चाहता हूं:

 for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++) { var tempType = Game_ScrollViewer_online.Items[i].GetType(); Button tempBut = (Game_ScrollViewer_online.Items[i] as Button); //Do stuff with button } 

लेकिन जैसा कि कहा गया है कि वापसी का प्रकार स्ट्रिंग है

यह बटन क्यों नहीं है? और क्या इस बटन का उपयोग करने का कोई तरीका है?

Solutions Collecting From Web of "लिस्ट बॉक्स आइटम वापसी स्ट्रिंग, जब DataTemplate बटन है"

आपको इस उद्देश्य के लिए FrameworkTemplate.FindName Method (String, FrameworkElement) :

 private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { DependencyObject child = VisualTreeHelper.GetChild(obj, i); if (child != null && child is childItem) return (childItem)child; else { childItem childOfChild = FindVisualChild<childItem>(child); if (childOfChild != null) return childOfChild; } } return null; } 

फिर:

 for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++) { ListBoxItem GameListBoxItem = (ListBoxItem)(Game_ScrollViewer_online.ItemContainerGenerator.ContainerFromIndex(i)); ContentPresenter contentPresenter = FindVisualChild<ContentPresenter>(GameListBoxItem); DataTemplate myDataTemplate = contentPresenter.ContentTemplate; Button tempBut = (Button) myDataTemplate.FindName("Current_game_button", contentPresenter); //Do stuff with button } 

अनुपलब्ध FindName उपयोग इस तरह FindName उपयोग करने के लिए:

 public T FindDescendant<T>(DependencyObject obj) where T : DependencyObject { if (obj is T) return obj as T; int childrenCount = VisualTreeHelper.GetChildrenCount(obj); if (childrenCount < 1) return null; for (int i = 0; i < childrenCount; i++) { DependencyObject child = VisualTreeHelper.GetChild(obj, i); if (child is T) return child as T; } for (int i = 0; i < childrenCount; i++) { DependencyObject child = FindDescendant<T>(VisualTreeHelper.GetChild(obj, i)); if (child != null && child is T) return child as T; } return null; }