使用MVVM将自定义属性添加到对象

时间:2012-06-09 19:01:04

标签: mvvm silverlight-5.0

我是MVVM和Silverlight的新手

我设法启动并运行了一个示例Silverlight应用程序

我将表的内容 - tblClip返回到我的模型(Entity Framework)和关联的对象Clip。

现在我的剪辑上有一个名为Size的字段。这是一个整数,我希望增加5倍

这样做的正确方法是什么,仍然保持模式?

1)在模型上添加一个新的属性,如ModifiedSize并填充它(虽然不知道在哪里)我假设我需要将它作为DataMember进行装饰,以使其回到客户端 2)在视图模型中,一旦我从服务代理获取数据,就可以浏览增加大小的剪辑 3)别的......?

我不需要将对象保存回数据库。

1 个答案:

答案 0 :(得分:1)

UI特定属性属于ViewModel。例如,这是你可以做到的一种方式

public class ClipViewModel
{
    private int _size;

    public int Size
    {
        get { return _size; }
        set
        {
            _size = value;
            NotifyPropertyChanged("Size");
        }
    }

    public int ModifiedSize
    {
        get { return Size * 5; }
        set
        {
            Size = value / 5;
        }
    }
}

绑定到XAML中的ModifiedSize会更新Size以及执行INotifyPropertyChanged次通知

您可以做的另一件事是跳过ModifiedSize属性并使用转换器

public class ModifiedSizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return (int)value * 5;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return (int)value / 5;
    }
}

然后使用转换器

绑定到Size
<Slider Value="{Binding Path=Size, Converter={StaticResource modifiedSizeConverter}}" />