2011-11-21 101 views
0

我正在构建一个工具来同时编辑多个数据库对象,并且很想让您对高亮方案有所了解。
在我的ViewModel中,我有一个Juris,Jurisdictions的集合,这些集合与用户选择编辑的任何项目相关联。我还有一个由所有选定项目“CommonJuris”共享的辖区子集。我的问题是:是否有一种简单的方法可以用完整集合填充ListBox,并突出显示子集合中的项目?
目前我有一个布尔属性,IsCommon,在我的Jurisdiction Model。我真的不想在Model这个,但我还没有找到更好的解决方案。 Jurisdiction没有ViewModel,因为这是唯一的东西。WPF子组突出显示

这里是我的列表框本身的XAML:

<ListBox Grid.Row="1" Grid.Column="2" ItemContainerStyle="{StaticResource JuriAndTT}" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     HorizontalContentAlignment="Stretch" 
     ItemsSource="{Binding Juris}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

而且款式:

<Style TargetType="{x:Type ListBoxItem}" x:Key="JuriAndTT"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsCommon}" Value="True"> 
       <Setter Property="Background" Value="PowderBlue"/> 
       <Setter Property="Foreground" Value="Black"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

回答

2

我觉得你这个回答你自己 - 你还没有创建视图模型,因为它会只有一个财产;相反,您已经使用该属性污染了您的模型。

您必须权衡这两者,并确定您是否更适合模型中的IsCommon或创建视图模型的开销。

还有一些其他方法可以创造性地使用附加的属性或转换器,但它们会比实现视图模型更加复杂和困难。