0

在我的视图中,我显示了一个项目列表,其中一个是当前活动的项目。对于这些项目,我定义了一个数据模板。当前活动的项目作为 ViewModel 上的属性公开。

我想用不同的背景颜色显示当前活动的项目,所以我尝试创建一个 IValueConverter 并将转换器参数绑定到当前项目,将其与正在运行的项目进行比较并返回相应的画笔。但由于无法绑定转换器参数,我失败了。

我不想在我的 Item 类中添加一个属性(例如 bool IsActive),因为这并不真正属于我的数据模型。

任何想法如何达到我正在寻找的结果?

视图模型:

public ObservableCollection<Item> Items {get;set;}
public Item ActiveItem {get; set;}

看法:

<DataTemplate DataType="{x:Type model:Item}">
            <Border Margin="3"
                    BorderBrush="DimGray"
                    BorderThickness="1"
                    CornerRadius="2"
                    Padding="3"
                    Background={Binding ???}
                    >
...
</DataTemplate>
4

1 回答 1

3

您的数据模型是某种东西,您的 ViewModel 可以是不同的,它正是为此 :)。我喜欢使用装饰器模式将这种类型的属性添加到我的业务对象中。

public class Decorator<T> : INotifyPropertyChanged
{
   public T MyObject { get; set; }
   ...

   public bool IsActive { get; set; }

}

如果您在 ViewModel 类中需要许多新属性,创建一些 MyItemViewModel 类也很有用。

ViewModel 不仅用于您的视图,还用于管理您的业务对象的显示方式,不要害怕围绕它创建新的类。

于 2013-05-01T12:55:34.280 回答