如何将Listbox绑定到两个属性?

时间:2010-06-16 21:08:16

标签: silverlight data-binding mvvm listbox

在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?

2 个答案:

答案 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>

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