2009-11-23 12 views
5

में चलाता है मैं शैली का उपयोग करने की कोशिश कर रहा हूँ ताकि तरह 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> 

मैं इतना है कि पथ का भरण मूल्य में परिवर्तन पंप या नहीं चल रहा है, तो ऐसा करना चाहते हैं। समस्या यह है कि स्टाइल ट्रिगर चांदी की रोशनी में समर्थित नहीं हैं!

तो क्या इस दौर में वैसे भी है? कोड में ऐसा करने का कोई तरीका है? मैंने इसमें देखा है लेकिन मैं फंस गया हूँ।

धन्यवाद

इयान

उत्तर

13

एक कस्टम मूल्य कनवर्टर एक समान लक्ष्य को प्राप्त होगा।

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"); 
    } 
} 
स्थान पर इस कनवर्टर के साथ

आप अपने XAML समायोजित कर सकते हैं करने के लिए: -

<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> 

ध्यान दें कि जब से अपने रंग पसंद अपने पथ परिभाषा करने के लिए स्थानीय था मैं सीधे में कनवर्टर का एक उदाहरण एम्बेड किया हो इस प्रकार मेरी पथ परिभाषा एक ही अर्थपूर्ण को सहानुभूति दे रही है। हालांकि यदि आपको एक ही जोड़ी रंगों का उपयोग करके इन रूपांतरणों की संख्या की आवश्यकता होती है तो आप एक पृष्ठ संसाधन में कनवर्टर इंस्टेंस को आसानी से स्थानांतरित कर सकते हैं और सामान्य शॉर्टंड बाइंडिंग सिंटैक्स का उपयोग कर सकते हैं।