आप शैलियों और DataTriggers के साथ ऐसा संबंध है। बस अपने डिफ़ॉल्ट पृष्ठभूमि संपत्ति के साथ अपने ElementStyle सेट इस मामले ग्रीन में, और अन्य मामलों के लिए DataTriggers जोड़ें:
<DataGridTextColumn Binding="{Binding WhateverIWantToDisplay}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background"
Value="{Binding Foo, Converter={x:Static my:FooToColorConverter.Instance}}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
इस के साथ
:
<DataGridTextColumn Binding="{Binding WhateverIWantToDisplay}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<DataTrigger Binding="{Binding Foo}" Value="1">
<Setter Property="Background" Value="Blue" />
</DataTrigger>
<DataTrigger Binding="{Binding Foo}" Value="2">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding Foo}" Value="2">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
एक और दृष्टिकोण एक कनवर्टर के साथ एक बाध्यकारी उपयोग करने के लिए है कनवर्टर:
public class FooToColorConverter : IValueConverter
{
public static readonly IValueConverter Instance = new FooToColorConverter();
public object Convert(object value, ...
{
int foo = (int)value;
return
foo==1 ? Brushes.Blue :
foo==2 ? Brushes.Red :
foo==3 ? Brushes.Yellow :
foo>3 ? Brushes.Green :
Brushes.Transparent; // For foo<1
}
public object ConvertBack(...
{
throw new NotImplementedException();
}
}
ध्यान दें कि जवाब देने के serge_gubenko रूप में अच्छी तरह से काम करेगा दे दी है, लेकिन अपने फू संपत्ति के मूल्य ne केवल अगर ver परिवर्तन। ऐसा इसलिए है क्योंकि कलर प्रॉपर्टी गेटर केवल एक बार बुलाया जाएगा। रंग को केवल पढ़ने-योग्य निर्भरता प्रॉपर्टी में बदलकर और फू को असाइन किए जाने पर अपडेट करके उसका समाधान सुधार किया जा सकता है, लेकिन आम तौर पर आपके डेटा मॉडल में रंग जैसी यूआई-विशिष्ट जानकारी रखने का एक बुरा विचार है, इसलिए इसकी अनुशंसा नहीं की जाती है।
स्रोत
2009-11-17 06:04:46
आपको बहुत बहुत धन्यवाद। मुझे डब्ल्यूपीएफ को काम करने में इतनी निराशा होती है क्योंकि यह त्रुटियों को छिपाने के लिए होती है और जब आपके पास कोड सही नहीं होता है तो बस कुछ भी नहीं करते हैं। लेकिन जब यह काम करता है, और जब आप जानते हैं कि आप क्या कर रहे हैं, तो इसकी बिजली तेज और उपयोग में आसान है। मैं ईमानदारी से कहूंगा कि डब्ल्यूपीएफ में मैंने उपयोग की जाने वाली किसी भी तकनीक का सबसे तेज़ सीखने की वक्र है। वैसे भी, धन्यवाद। मैं कनवर्टर के साथ गया क्योंकि यह मुझे सबसे बड़ी लचीलापन देता है। –
सुंदर .. !!! मेरी तरफ से +1 .. !! – samar