2013-12-11 12 views
7

Tôi đang tạo các nút theo chương trình và thêm chúng vào bảng ngăn xếp để các nút thay đổi mỗi khi người dùng điều hướng đến trang. Tôi đang cố gắng làm một cái gì đó như thế này khi tôi nhấp vào nút tạo ra nó sẽ lấy thẻ của nút và đi đến trang chính xác. Tuy nhiên, tôi không thể truy cập các phần tử nút bằng RoutedEventHandler. Dưới đây là các mã:Làm thế nào để bạn nhận được tên/thẻ nút khi nút sự kiện. Nhấp chuột xảy ra?

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)); 
} 

Trả lời

8

Khá đơn giản chỉ cần cast người gửi đến một nút Object một bạn sẽ nhận được tất cả các thuộc tính nút

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

Cảm ơn bạn! Nó rất đơn giản! – WiteCastle

4

Có một vài giải pháp ở đây. Đầu tiên là để kiểm tra đơn giản và xem nếu người gửi của sự kiện này là một yếu tố Button và sử dụng thông tin có

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)); 
    } 
} 

Một nhiều loại an toàn tùy chọn/thân thiện là tạo ra một lambda để xử lý các sự kiện trực tiếp truy cập vào Button dụ bạn muốn

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)); 
    }; 
} 
1
int tag = (sender as Button).Tag 
Các vấn đề liên quan