我需要item控件中项目的样式取决于项目的字符串变量。因此,如果字符串为“ A”,则该项目应具有样式1;如果字符串为“ B”,则其应具有样式2,依此类推。
我一直在环顾四周,但无法真正找到实现此目的的直接方法,因此目前没有代码可显示。我想也许我不知道我应该搜索的概念的名称。
所以问题是:在WPF中是否有简单直接的典型方法?
答案 0 :(得分:0)
DataTriggers应该这样做。不是ItemsControl,但应该相似
更新:ItemsControl with DataTriggers
<ListBox ....>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Gender}" Value="Male">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Gender}" Value="Female">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
答案 1 :(得分:0)
您可以使用Spark to process rdd chunk by chunk from json files and post to Kafka topic:
public class TemplateSelector : DataTemplateSelector
{
public DataTemplate TemplateA { get; set; }
public DataTemplate TemplateB { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
YourClass dataObj = item as YourClass;
if (dataObj != null)
{
switch (dataObj.TheStringProperty)
{
case "A":
return TemplateA;
case "B":
return TemplateA;
}
}
return base.SelectTemplate(item, container);
}
}
XAML:
<ItemsControl>
<ItemsControl.Resources>
<DataTemplate x:Key="a">
<TextBlock>I am an A...</TextBlock>
</DataTemplate>
<DataTemplate x:Key="b">
<TextBlock>I am a B...</TextBlock>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemTemplateSelector>
<local:TemplateSelector TemplateA="{StaticResource a}" TemplateB="{StaticResource b}" />
</ItemsControl.ItemTemplateSelector>
</ItemsControl>