我有一个控制滑块值的TwoWay绑定:
<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
之下),则滑块无法正常更新。
我错过了什么?
答案 0 :(得分:0)
Slider.Value的类型为double
,而不是Nullable<double>
。我注意到WinRT对于匹配绑定类型非常挑剔。它不会像WPF和Silverlight那样为您自动转换大多数内容。
我的回答是:
使用INotifyPropertyChanged
作为@Adi已提及并使用double
作为属性类型。
如果您在视图模型中使用Nullable<double>
,则创建一个将null转换为零的IValueConverter
。