在Silverlight中,我有一个Grid,其DataContext设置为ViewModel类
ViewModel包含项目列表(每个项目包含int ID和字符串Text)和一个整数“ID”,用于标识当前活动项目(非选定项目)。
我想用ListBox构造xaml,其中激活的项目有另一种颜色。我该怎么办?
具体来说,在xaml中,我有:
<Grid DataContext="ModelView">
<ListBox ItemsSource="Questions">
<ListBox.ItemTemplate>
<TextBlock Text="{Binding ID}" />
<TextBlock Text="{Binding Text}" />
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text="{Binding ID}" />
</Grid>`
如何根据ModelView中的属性ID设置列表框中一个(且只有一个)项的颜色?
还有一个问题 - 当我更改活动项目时 - 如何刷新ListBox?
答案 0 :(得分:0)
我在xaml:
<Grid DataContext="ModelView">
<ListBox ItemsSource="Questions">
<ListBox.ItemTemplate>
<TextBlock Text="{Binding ID}" />
<TextBlock Text="{Binding Text}" />
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text="{Binding ID}" />
</Grid>
如何根据ModelView中的属性ID设置列表框中一个(且仅一个)项目的颜色?
答案 1 :(得分:0)
你的ItemTemplate似乎没有效果顺便说一句。 !
我会尝试使用触发器模板突出显示的列表框项目
在网格中我做了这个例如
<DataTemplate>
<Image x:Name="MyImage" Source="Images/corrected.png" Width="64" Height="64" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding YourConditionValue}" Value="0">
<Setter TargetName="MyImage" Property="Source" Value="Images/notCorrected.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
这可能是一个解决方案,但您需要自己检查