मेरे पास एक सूची बॉक्स है जो LogMessages के पर्यवेक्षण चयन के लिए बाध्य है।डब्ल्यूपीएफ, एक्सएएमएल: ListBox आइटम्स ऑब्जेक्ट की सूची पर बाइंडिंग का उपयोग करके ListBoxItem को कैसे स्टाइल करें?
public ObservableCollection<LogMessage> LogMessages { get; set; }
public LogMessageData()
{
this.LogMessages = new ObservableCollection<LogMessage>();
}
प्रत्येक संदेश दो पैरामीटर है:
public class LogMessage
{
public string Msg { get; set; }
public int Severity { get; set; }
//code cut...
}
ListBox उन वस्तुओं से भरा जा रहा है, और मैं रंग-कोड (बदल एक पृष्ठभूमि रंग की ListBoxItem) सूची की जरूरत है एक LogMessage आइटम के गंभीरता पैरामीटर के आधार पर।
<UserControl.Resources>
<AlternationConverter x:Key="BackgroundSeverityConverter">
<SolidColorBrush>Green</SolidColorBrush>
<SolidColorBrush>Yellow</SolidColorBrush>
<SolidColorBrush>Red</SolidColorBrush>
</AlternationConverter>
<Style x:Key="BindingAlternation" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background"
Value="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Severity,
Converter={StaticResource BackgroundSeverityConverter}}"/>
</Style>
<DataTemplate x:Key="LogDataTemplate">
<TextBlock x:Name="logItemTextBlock" Width="Auto" Height="Auto"
Text="{Binding Msg}"/>
</DataTemplate>
</UserControl.Resources>
और एक वास्तविक ListBox:
यहाँ है कि मैं क्या लॉग दिखा उपयोगकर्ता नियंत्रण की XAML में अब है
<ListBox IsSynchronizedWithCurrentItem="True"
ItemTemplate="{DynamicResource LogDataTemplate}"
ItemsSource="{Binding LogFacility.LogMessages}"
x:Name="logListBox" Grid.Row="1"
ItemContainerStyle="{StaticResource BindingAlternation}" />
AlternationConverter प्रयोग किया जाता है क्योंकि संदेश की गंभीरता पैरामीटर प्रकार की है Int (0..3), और हम आसानी से उस शैली का उपयोग कर शैलियों के बीच स्विच कर सकते हैं।
अवधारणा स्पष्ट है, लेकिन अब तक यह मेरे लिए काम नहीं करती है। ListBoxItem का पृष्ठभूमि रंग नहीं बदला था।
मेरा हल यह है कि इसे {रिलेटिवसोर्स टेम्पलेटेड पेरेंट} के साथ करना है। एप्लिकेशन को डीबग करते समय आपको आउटपुट विंडो में कोई बाध्यकारी त्रुटियां मिलती हैं? –
कोई बाध्यकारी त्रुटियां नहीं थीं, लेकिन दुर्भाग्य से आप सही हैं, इस ऑब्जेक्ट के साथ इसका कोई लेना-देना नहीं है जिसे मैं संदर्भित करने का प्रयास कर रहा हूं। आउटपुट विंडो में आश्चर्यजनक रूप से कोई बाध्यकारी त्रुटियां नहीं। –