2012-09-19 44 views
5

Tôi có một Button và Phong cách của nó:Nút IsEnabled Kích hoạt không hoạt động

<Button Name="MyBtn" Style="{StaticResource ButtonEnabledStyle}" 
     IsEnabled="False" Opacity="1" /> 

<Style x:Key="ButtonEnabledStyle" TargetType="Button"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="True" > 
      <Setter Property="Opacity" Value="0.1" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Nhưng khi tôi cho phép các nút (MyBtn.IsEnabled = true) nó không thay đổi Opacity của nó. Tại sao? Làm thế nào tôi có thể giải quyết vấn đề này? Cảm ơn.

+0

Tại thời điểm đó bạn đang gọi MyBtn.IsEnabled = true? Có lẽ trước khi phong cách được khởi tạo? – Vale

+0

@ Không, tôi gọi khi tôi nhấp vào một nút khác, các điều khiển đã được tải. – Nick

Trả lời

15

Giá trị cục bộ được đặt trên phần tử (Opacity="1" trong mã của bạn) sẽ luôn được ưu tiên hơn giá trị kích hoạt kiểu hoặc kiểu. Xin hãy xem số Dependency Property Setting Precedence List.

Một sửa chữa dễ dàng là để thiết lập giá trị mặc định trên phong cách thay vì:

<Style x:Key="ButtonEnabledStyle" TargetType="Button"> 
    <Setter Property="Opacity" Value="1.0" /> 
    <Style.Triggers> 
    <Trigger Property="IsEnabled" Value="True" > 
     <Setter Property="Opacity" Value="0.1" /> 
    </Trigger> 
    </Style.Triggers> 
</Style> 
Các vấn đề liên quan