2010-01-26 143 views
1

我有一個ViewModel,提供項目的集合。還有一個ActiveItem propery。 Items集合可能包含或不包含ActiveItem。WPF突出顯示項目

我想要做的(在XAML中)是將項目顯示爲一個列表並突出顯示任何等於活動項目的項目。

我曾嘗試沒有成功如下:

<ListBox ItemsSource="{Binding Items}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border x:Name="outerBorder" Background="Green"> 
       <TextBlock Text="{Binding ItemId}" /> 
      </Border> 
      <DataTemplate.Triggers> 
       <DataTrigger 
        Binding="{Binding  
         Path=DataContext.Item.ItemId,  
         RelativeSource={RelativeSource TemplatedParent},  
         Mode=Default}" 
        Value="{Binding  
         Path=DataContext.ActiveItem.ItemId,  
         RelativeSource={RelativeSource AncestorType=Window},  
         Mode=Default}" 
       > 
        <Setter TargetName="outerBorder" 
         Property="Background" Value="Orange" /> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

正如你可以看到我試圖使用DataTrigger與ActiveItem當前項目匹配,但它不工作。我認爲這與我嘗試使用DataTrigger.Value中的綁定有關 - 我還沒有看到任何其他示例。

任何想法,我可能會使這項工作?

感謝,

丹尼爾

回答

3

由於您使用的MVVM,爲什麼不只是有視圖模型公開屬性告訴視圖無論是主動或不?這會讓你從邏輯上看到你的虛擬機。

+0

因此,而不是直接暴露項目(模型對象),我應該創建一個ItemViewModel並暴露?我會不情願直接添加一個IsActive屬性到我的Item模型對象。 – djskinner 2010-01-26 15:18:13

相關問題