2009-10-07 27 views

Trả lời

0

Về cơ bản, tạo ra một phong cách cho nút mà làm cho nó hiển thị một đối tượng hình ảnh trong tài sản nội dung của nó, và sau đó có một kích hoạt mà kiểm tra các nút trạng thái kích hoạt, và khi nó là TRUE có nó là một hình ảnh, và ở tất cả các lần khác là hình ảnh khác.

10

Bạn có thể sử dụng một phong cách với trigger như thế này:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <StackPanel Orientation="Horizontal" > 
        <Image Name="PART_Image" Source="path to normal image" /> 
       </StackPanel> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Source" Value="path to mouse over image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter Property="Source" Value="path to pressed image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Source" Value="path to disabled image" TargetName="PART_Image"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Không có cách nào để sử dụng một số loại bộ lọc chuyển sang màu xám (và các bộ lọc khác) để tạo hình ảnh khi đang di chuyển? Chúng ta phải có những hình ảnh mã hóa cơ bản về các trạng thái khác nhau? –

+2

Có, bạn có thể sử dụng cùng một logic như mô tả ở trên và thay đổi thuộc tính Độ mờ của hình ảnh. Bạn cũng có thể làm những việc như thêm Đường viền vào mẫu và hiển thị/ẩn nó khi chuột ở trên hình ảnh hoặc thay đổi màu nền ... –

+0

@MalRoss - Xem bài viết về từ viết mã này, cho thấy cách bạn có thể sử dụng chuyển đổi giá trị để tạo hình ảnh bị vô hiệu hóa khi đang di chuyển. Tôi với bạn, rằng nó là bực bội để phải viết mã để làm những điều mà WinForms làm miễn phí, nhưng ít nhất bạn không phải trước khi gen hình ảnh. http://www.codeproject.com/KB/WPF/GrayscaleButton.aspx – kbrimington

8

tôi đã sử dụng đoạn mã sau để làm cho hình ảnh bên trong nút để có một nửa opacity khi nút bị vô hiệu hóa và nó hoạt động tuyệt vời!

<Style TargetType="Button"> 
    <Style.Resources> 
     <Style TargetType="Image"> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Opacity" Value="0.5" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Style.Resources> 
</Style> 
Các vấn đề liên quan