【发布时间】:2012-10-08 01:11:46
【问题描述】:
我有一个控制滑块值的双向绑定:
<Slider Orientation="Vertical" Height="200" Value="{Binding Path=MapScale, Mode=TwoWay}" Maximum="{Binding MaxScale}" Minimum="{Binding MinScale}" StepFrequency="0.1" />
绑定在 ViewModel 中作为 DependencyProperty:
public static readonly DependencyProperty MapScaleProperty =
DependencyProperty.Register("MapScale", typeof(Double?), typeof(MappingPageViewModel), new PropertyMetadata(0.0));
public Double? MapScale
{
get { return GetValue(MapScaleProperty) as Double?; }
set { SetValue(MapScaleProperty, value); OnPropertyChanged("MapScale"); }
}
就像现在的代码一样,当我更新 MapScale(例如MapScale += .1)时,滑块会正确更新。但是,如果我删除 OnPropertyChanged 方法(我的印象是 SetValue 已经调用过),滑块不会正确更新。
我错过了什么?
【问题讨论】:
-
您是否有理由使用依赖属性而不是常规属性?我认为我没有看到在视图模型中使用 DP 的示例,而在视图模型方面,我自己一直使用普通的旧属性。
-
DPs 似乎是 Metro 应用程序的必经之路。对于普通的旧属性,您是否使用了 OnPropertyChanged 或其他东西?
-
是的,
INotifyPropertyChanged。
标签: c# mvvm microsoft-metro windows-runtime