如果我使用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没有将绑定值设置回最小值。
有人知道可能是什么问题和/或如何修复它?
答案 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));
}
}