我是MVVM和Silverlight的新手
我设法启动并运行了一个示例Silverlight应用程序
我将表的内容 - tblClip返回到我的模型(Entity Framework)和关联的对象Clip。
现在我的剪辑上有一个名为Size的字段。这是一个整数,我希望增加5倍
这样做的正确方法是什么,仍然保持模式?
1)在模型上添加一个新的属性,如ModifiedSize并填充它(虽然不知道在哪里)我假设我需要将它作为DataMember进行装饰,以使其回到客户端 2)在视图模型中,一旦我从服务代理获取数据,就可以浏览增加大小的剪辑 3)别的......?
我不需要将对象保存回数据库。
保
答案 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}}" />