0

我是 MVVM 和 Silverlight 的新手

我已经成功启动并运行了一个示例 Silverlight 应用程序

我将表的内容 - tblClip 返回到我的模型(实体框架)和关联的对象剪辑中。

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

什么是正确的方法来做到这一点并且仍然保持模式?

1)在模型上添加一个新属性,例如 ModifiedSize 并填充它(尽管不确定在哪里)我假设我需要将它装饰为 DataMember 以将其返回给客户端 2)在视图模型中,一旦我获得来自服务代理的数据,通过增加大小的剪辑 3) 其他...?

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

保罗

4

1 回答 1

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}}" />
于 2012-06-09T19:18:55.327 回答