2009-11-23 26 views
5

Tôi cố gắng để sử dụng phong cách gây nên trong Silverlight như vậy:Phong cách gây nên trong Silverlight

<Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round"> 
     <Path.Style> 
      <Style TargetType="{x:Type Path}"> 
       <Setter Property="Fill" Value="DarkGray"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=userControl, Path=PumpRunning}" Value="True"> 
         <Setter Property="Fill" Value="DarkGreen"/>   
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Path.Style> 
    </Path> 

Tôi muốn làm điều này để các giá trị điền của con đường thay đổi nếu bơm đang chạy hay không. Vấn đề là trình kích hoạt kiểu không được hỗ trợ trong Silverlight!

Vì vậy, có thể làm tròn điều này không? Có cách nào để làm điều này trong mã? Tôi đã nhìn vào nó nhưng tôi đang bối rối.

Cảm ơn

Ian

Trả lời

13

Một tùy chỉnh giá trị chuyển đổi sẽ đạt được một mục tiêu tương tự.

public class BoolToBrushConverter : IValueConverter 
{ 
    public Brush FalseBrush { get; set; } 
    public Brush TrueBrush { get; set; } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    if (value == null) 
    return FalseBrush; 
    else 
    return (bool)value ? TrueBrush : FalseBrush; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    throw new NotImplementedException("This converter only works for one way binding"); 
    } 
} 

Với chuyển đổi này ở nơi mà bạn có thể điều chỉnh XAML của bạn để: -

<Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round"> 
    <Path.Fill> 
    <Binding Path="PumpRunning" ElementName="userControl"> 
    <Binding.Converter> 
    <local:BoolToBrushConverter 
     FalseBrush="DarkGray" TrueBrush="DarkGreen" /> 
    </Binding.Converter> 
    </Binding> 
    </Path.Fill> 
</Path> 

Lưu ý rằng kể từ khi lựa chọn màu sắc của bạn là địa phương để xác định con đường của bạn tôi đã nhúng một thể hiện của sự chuyển đổi trực tiếp vào định nghĩa đường dẫn của tôi do đó đạt được cùng một ngữ nghĩa. Tuy nhiên, nếu bạn yêu cầu một số các chuyển đổi này bằng cách sử dụng cùng một cặp màu, bạn có thể dễ dàng đặt cá thể Chuyển đổi trong tài nguyên trang và sử dụng cú pháp liên kết viết tắt bình thường.

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