2010-06-16 68 views
0

在Silverlight中,我有一个DataContext设置为类ViewModel的网格。
ViewModel包含项目列表(每个项目包含int ID和字符串文本)和一个标识当前活动项目(未选定项目)的整数“ID”。
我想用ListBox构造xaml,其中激活的项目具有另一种颜色。我该怎么做?如何将Listbox绑定到两个属性?

具体来说,在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>` 

如何设置我的一个(且只有一个)在列表框项的颜色,基于属性ID在模型视图?

还有一个问题 - 当我更改活动项目时 - 如何刷新ListBox?

+0

对不起,如果它只是我 - 但我不知道要求是什么。 – 2010-06-16 21:15:36

+0

这个xaml只是简单的例子。我找到解决方案,但不喜欢它 - 我必须用布尔属性IsActivated和静态属性ViewModel扩展项目。是激活当前项目的压缩ID与活动项目的ID。 – Gabriel 2010-06-18 14:24:53

回答

0

我在XAML:

如何根据属性ID在模型视图在列表框中第一个(也是唯一一个)项目的设置我的色彩?

+0

@Gabriel:这种类型的附加信息属于问题部分。我继续并在那里添加它。我建议你删除这个答案,提高获得正确答案的机会。 – mjv 2010-06-17 05:29:29

+0

如何删除我的答案? – Gabriel 2010-06-17 10:07:32

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> 

这可能是一个解决方案,但你需要自己去查

相关问题