2013-12-11 7 views
7

मैं प्रोग्रामिंग रूप से बटन बना रहा हूं और उन्हें एक स्टैक पैनल में जोड़ रहा हूं ताकि जब भी उपयोगकर्ता पृष्ठ पर नेविगेट करता है तो बटन बदल जाते हैं। मैं ऐसा कुछ करने की कोशिश कर रहा हूं, जहां मैं बनाए गए बटन पर क्लिक करता हूं, यह बटन के टैग को पकड़ लेगा और सही पेज पर जायेगा। हालांकि, मैं RoutedEventHandler का उपयोग कर बटन तत्वों तक नहीं पहुंच सकता। कोड यह रहा:ईवेंट बटन.क्लिक होने पर आपको बटन नाम/टैग कैसे मिलता है?

foreach (item in list) 
{ 
    Button newBtn = new Button(); 
    newBtn.Content = "Button Text"; 
    newBtn.Tag = item.Tag; 
    newBtn.Name = item.Name; 
    newBtn.Click += new RoutedEventHandler(newBtn_Click); 
} 

private void newBtn_Click(object sender, RoutedEventArgs e) 
{ 
    NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + sender.Tag, UriKind.Relative)); 
} 

उत्तर

8

सुंदर सरल सिर्फ वस्तु सभी बटन गुण

private void newBtn_Click(object sender, RoutedEventArgs e) 
    { 
     NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + ((Button)sender).Tag, UriKind.Relative)); 
    } 
+0

धन्यवाद! यह इतना आसान था! – WiteCastle

4

एक आप मिल जाएगा यहाँ समाधान के एक जोड़े हैं एक बटन के लिए इस डाली। पहले सरल जांच करने के लिए है और देखें कि क्या घटना के इस एक Button तत्व था और वहाँ जानकारी

private void newBtn_Click(object sender, RoutedEventArgs e) 
{ 
    Button b = sender as Button; 
    if (b != null) { 
    NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + b.Tag, UriKind.Relative)); 
    } 
} 

एक और अधिक प्रकार सुरक्षित/अनुकूल विकल्प घटना है जो सीधे तक पहुँचता है संभालने के लिए एक लैम्ब्डा बनाने के लिए है का उपयोग Button उदाहरण आप

foreach (item in list) 
{ 
    Button newBtn = new Button(); 
    newBtn.Content = "Button Text"; 
    newBtn.Tag = item.Tag; 
    newBtn.Name = item.Name; 
    newBtn.Click += (sender, e) => { 
    NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + newBtn.Tag, UriKind.Relative)); 
    }; 
} 
संबंधित मुद्दे