2

我有一个控制滑块值的 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中已经调用过该方法),滑块将无法正确更新。

我错过了什么?

4

1 回答 1

0

Slider.Value 的类型是double,而不是Nullable<double>。我注意到 WinRT 对匹配绑定类型非常挑剔。它不会像 WPF 和 Silverlight 那样为您自动转换大多数东西。

我的回答是:

INotifyPropertyChanged用作@Adi 已经提到并用作double属性类型。

如果您无法Nullable<double>在视图模型中使用,则创建一个IValueConverter将 null 转换为零的。

于 2012-10-08T02:34:18.790 回答