2015-02-09 53 views

回答

3

不太難。

代碼隱藏

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Checkbox_OnMouseEnter(object sender, MouseEventArgs e) 
    { 
     var checkbox = sender as CheckBox; 

     if (e.LeftButton == MouseButtonState.Pressed) 
     { 
      if (checkbox != null) 
      { 
       checkbox.IsChecked = !checkbox.IsChecked; 
      } 
     } 
    } 

    private void UIElement_OnGotMouseCapture(object sender, MouseEventArgs e) 
    { 
     if (e.LeftButton == MouseButtonState.Pressed) 
     { 
      var checkbox = sender as CheckBox; 
      if (checkbox != null) 
      { 
       checkbox.IsChecked = !checkbox.IsChecked; 
       checkbox.ReleaseMouseCapture(); 
      } 
     } 
    } 

XAML

<Window x:Class="ClickAndDrag.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<StackPanel> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
    <CheckBox MouseEnter="Checkbox_OnMouseEnter" GotMouseCapture="UIElement_OnGotMouseCapture"/> 
</StackPanel> 

原因釋放鼠標捕獲是爲了防止一個複選框吞下所有的事件被點擊時。

+0

完美,謝謝! – 2confused4u 2015-02-09 11:46:54

相關問題