2010-03-05 32 views
61

Làm thế nào để đặt sự kiện/kích hoạt MouseOver cho đường viền trong XAML? Tôi muốn đường viền chuyển sang màu xanh lá cây khi con chuột vượt qua nó và sau đó trở lại màu xanh lam khi con chuột không còn trên biên giới nữa. Tại sao tôi không thể sử dụng mã sau đây:Làm thế nào để thiết lập sự kiện/kích hoạt MouseOver cho đường viền trong XAML?

<Border 
    Name="ClearButtonBorder" 
    Grid.Column="1" 
    CornerRadius="0,3,3,0" 
    Background="Blue"> 
    <Border.Triggers> 
     <Trigger Property="Border.IsMouseOver" Value="True"> 
      <Setter Property="Border.Background" Value="Green" /> 
     </Trigger> 
     <Trigger Property="Border.IsMouseOver" Value="False"> 
      <Setter Property="Border.Background" Value="Blue" /> 
     </Trigger> 
    </Border.Triggers> 
    <TextBlock 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Text="X" /> 
</Border> 

Tôi thực sự không nhận được các trình kích hoạt và kiểu này trong WPF. Nó là như vậy kéo không để có thể đạt được một cái gì đó đơn giản như thế này .. Xin vui lòng cung cấp các giải pháp cho tôi và giúp tôi hiểu những gì heck là sai với mã của tôi? Cảm ơn nhiều.

Trả lời

119

Vâng, đây là khó hiểu ...

Theo this blog post, có vẻ như đây là một thiếu sót từ WPF.

Để làm cho nó hoạt động, bạn cần phải sử dụng một phong cách:

<Border Name="ClearButtonBorder" Grid.Column="1" CornerRadius="0,3,3,0"> 
     <Border.Style> 
      <Style> 
       <Setter Property="Border.Background" Value="Blue"/> 
       <Style.Triggers> 
        <Trigger Property="Border.IsMouseOver" Value="True"> 
         <Setter Property="Border.Background" Value="Green" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Border.Style> 
     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="X" /> 
    </Border> 

Tôi đoán vấn đề này không phải là phổ biến như hầu hết mọi người có xu hướng yếu tố ra loại điều này thành một phong cách, vì vậy nó có thể được được sử dụng trên nhiều điều khiển.

+2

Cảm ơn câu trả lời của bạn. Bây giờ tôi biết làm thế nào nó được thực hiện. Tuy nhiên, lý do tại sao nó phải được thực hiện như thế vẫn còn vô lý đối với tôi. Nhưng đó là OK, tôi đoán. :) – Boris

+0

Có, tôi đồng ý rằng nó không hợp lệ. Như tôi đã nói, dường như là một lỗi/thiếu sót từ WPF. – Grokys

+5

Tôi không đồng ý rằng đó là lỗi hoặc thiếu sót. Trong WPF có một bộ quy tắc rõ ràng xác định ưu tiên giá trị thuộc tính. http://msdn.microsoft.com/en-us/library/ms743230.aspx –

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