2010-07-20 123 views
1

我有一个BookItemView类,用于ListViewItem的数据模板。如何动态更改ListViewItem的背景颜色?

/// <summary> 
    /// Represent a class to keep every items view. 
    /// </summary> 
    public class BookItemView : ICloneable 
    { 
     /// <summary> 
     /// Create a new instance of BookItemView. 
     /// </summary> 
     public BookItemView() 
     { 
      this.ID = Guid.NewGuid(); 
     } 

     /// <summary> 
     /// Gets current instance unique id. 
     /// </summary> 
     public Guid ID 
     { 
      get; 
      private set; 
     } 

     /// <summary> 
     /// Gets or sets items title. 
     /// </summary> 
     public string Title { get; set; } 

     /// <summary> 
     /// Gets or sets items subtitle. 
     /// </summary> 
     public string Subtitle { get; set; } 

     /// <summary> 
     /// Gets or sets items description. 
     /// </summary> 
     public string Description { get; set; } 

     /// <summary> 
     /// Gets or sets items icon. 
     /// </summary> 
     public ImageSource Icon { get; set; } 

     /// <summary> 
     /// Gets or sets a value which indicate is item marked or not. 
     /// </summary> 
     public bool Marked { get; set; } 

     /// <summary> 
     /// Gets or sets a list of BookItemView. 
     /// </summary> 
     public ObservableCollection<BookItemView> BookItems { get; set; } 

     /// <summary> 
     /// Create a shallow copy of current object. 
     /// </summary> 
     /// <returns>A shallow copy of current object.</returns> 
     public object Clone() 
     { 
      return base.MemberwiseClone(); 
     } 
    } 

我该如何为ListView中的某些ListViewItems设置特殊背景颜色?

回答

1

ItemContainerStyle是你的朋友。例如:

<ListView> 
    <ListView.ItemContainerStyle> 
     <Setter Property="Background" Value="{Binding Marked, Converter={StaticResource MarkedConverter}}"/> 
    </ListView.ItemContainerStyle> 
</ListView> 
1

定义你想改变的背景是什么,并在ListViewItem的触发改变你的财产的具体价值背景定义的DataTemplate所需特性。