2011-10-06 22 views
14

Tôi đang sử dụng một ToggleButton trong một cửa sổ WPF:WPF Chuyển đổi Nút Kiểm tra/Uchecked sự kiện với một handler

<ToggleButton Height="37" 
      HorizontalAlignment="Left" 
      Margin="485.738,254.419,0,0" 
      VerticalAlignment="Top" 
      Width="109" 
      IsEnabled="True" 
      Checked="toggleAPDTimeoutErr_Checked" 
      Unchecked="toggleAPDTimeoutErr_Unchecked">Timeout</ToggleButton> 

Tôi có hai sự kiện mà tôi đang theo dõi, nhưng điều này được thực hiện trong hai đoạn mã khác nhau đằng sau xử lý. Làm thế nào điều này có thể được thực hiện chỉ trong một?

Tôi sẽ có nhiều ToggleButton s và mã có thể lớn.

+0

Bạn có muốn một sự kiện được chọn hoặc không được kiểm soát hoặc bạn muốn hai trình xử lý khác nhau nhưng ở cấp độ toàn cầu tức là chỉ trong một tệp? –

+0

Chỉ để kiểm tra và bỏ chọn. Cảm ơn! –

Trả lời

17

Bạn có thể đính kèm một sự kiện nhấp chuột duy nhất của ToggleButton của bạn và trong xử lý của nó, bạn có thể kiểm tra ToggleButtonIsChecked tài sản theo loại đúc các object sender trong xử lý của bạn như thế này -

private void ToggleButton_Click(object sender, RoutedEventArgs e) 
{ 
    if((sender as ToggleButton).IsChecked) 
    { 
     // Code for Checked state 
    } 
    else 
    { 
     // Code for Un-Checked state 
    } 
} 

XAML:

<ToggleButton Height="37" HorizontalAlignment="Left" Margin="485.738,254.419,0,0"  VerticalAlignment="Top" Width="109" IsEnabled="True" Click="ToggleButton_Click">Timeout</ToggleButton> 
+0

Tôi nhận được lỗi sau: Không thể chuyển đổi loại bool? để bool. Làm thế nào tôi có thể sửa lỗi này một cách an toàn? –

+3

Toán tử kết hợp song song hoạt động tốt cho việc này. ex) 'if ((người gửi dưới dạng ToggleButton) .IsChecked ?? false)' –

+0

Nút toggleButton của bạn có phải là ba trạng thái hay hai trạng thái không? –

0

Hãy thử điều này

private void tBtn_super_Click(object sender, RoutedEventArgs e) 
     { 
      if (tBtn_super.IsChecked == true) 
      { 
       MessageBox.Show("True"); 
      } 
      else 
      { 
       MessageBox.Show("False"); 
      } 
     } 
7

Bạn không nên sử dụng sự kiện Click như một số câu trả lời được đề xuất, vì nó sẽ không hoạt động khi thuộc tính IsChecked được thay đổi bằng mã hoặc bất kỳ sự kiện nào khác ngoài chuột (bàn phím, hoạt ảnh ..). Đây chỉ đơn giản là một lỗi.

Thay vào đó bạn có thể sử dụng cùng một trình xử lý cho cả CheckedUnchecked và thực hiện hành động tùy thuộc vào thuộc tính IsChecked.

<ToggleButton 
    Checked="toggleButton_IsCheckedChanged" 
    Unchecked="toggleButton_IsCheckedChanged" /> 
+2

Hoàn toàn chính xác. – KyloRen

Các vấn đề liên quan