Xamarin Slider最小化UWP的限制值

时间:2017-07-19 11:16:49

标签: android xaml xamarin xamarin.forms xamarin.uwp

如果我使用Slider属性,我在UWP的Xamarins Minimum注意到了一个不受欢迎的行为。让我们说

<Slider Value="{Binding SliderValue}" Maximum="20" Minimum="10"/>

必然会

public double SliderValue { get; set; } = 15;

这意味着滑块的初始位置应该恰好在中间。 但是:在启动期间,在Slider获得值(15)之后,它将值设置回最小值(10)。滑块现在位于最小左侧位置。使用Minimum="0"滑块不会将其值设置回来,初始位置与预期的一样。我还尝试在我的XAML上更改滑块属性的顺序,但结果仍然相同。

如果我在Android中运行应用程序,则不会出现此问题。 Android没有将绑定值设置回最小值。

有人知道可能是什么问题和/或如何修复它?

1 个答案:

答案 0 :(得分:0)

解决方案2 : 如果您的最大值和最小值不变,那么解决方案1太复杂了。我建议只绑定所有三个值:

<Slider Value="{Binding SliderValue, Mode = TwoWay}" 
Maximum="{Binding Maximum, Mode = OneWay}" 
Minimum="{Binding Minimum, Mode = OneWay}"/>

然后,当您初始化ViewModel时,确保以正确的顺序设置这些值(在初始化视图时可能需要执行此操作才能正常工作):

Minimum = 10;
Maximum = 20;
SliderValue = 15;

解决方案1 ​​: 也许有更好的答案,但我只能建议使用TwoWay绑定:

<Slider Value="{Binding SliderValue, Mode = TwoWay}" Maximum="20" Minimum="10"/>

然后在ViewModel中处理如下情况:

private double sliderValue = 15;
public double SliderValue
{
    get
    {
        return sliderValue;
    }
    set
    {
        if (logicToCheckIfValueMakesSense())
        {
            sliderValue = value;
        }
        onPropertyChanged(nameof(SliderValue));
    }
}