我是Xamarin表格的新手,仅使用了几个月。我有一个Xamarin表单应用程序,它将与Android和iOS一起使用,并且正在使用MVVM结构。我在ViewModel中有一个ObservableCollection
对象,我正在使用扩展了StackLayout
的自定义中继器视图进行迭代,并且在DataTemplate
内有一个自定义Entry类,该类扩展了Entry将其Text
属性绑定到对象的Value
属性(可为null的双精度)。
接下来我要做的是,如果要添加到模型中的某个布尔值为true,则修改模板以隐藏Entry
标记,然后显示Slider
和Label
,以显示Slider
的值。
到目前为止,我已经能够将Maximum
/ Minimum
属性绑定到我的Viewmodel属性,这很棒,但是只要我尝试将Value
属性绑定到{{ 1}},我的XAML无法加载,并且没有任何错误。我还需要实现功能,以仅允许用户在给定的“增量”(.1、1、2等)上滑动。我想滑动Slider
,一旦用户停止滑动,就Slider
属性被设置并存储在模型中。如果已经存在一个值,我还需要对其进行预加载,但是稍后可以找到这两个值。
我认为我对此做错了。我尝试搜索许多不同的示例,但是我无法解决这个问题。
这是我的XAML滑块/标签的外观
Value
我的模型的简化版本,因为我不想在那里放我可能不应该放的代码。
<Slider x:Name="slider" Value="{Binding Value}"
Maximum="{Binding VM.Question.NumericMaxValue}"/>
<Label x:Name="displayLabel"
Text="{Binding Source={x:Reference slider}, Path=Value,
StringFormat='The slider value is {0:F0}'}"
HorizontalOptions="Center" VerticalOptions="CenterAndExpand" />
答案 0 :(得分:0)
从您输入的代码中(缺少一些关键部分),
但我认为您应该使用 max_input_vars
绑定:
TwoWay
您也不需要为属性使用<Slider x:Name="slider"
Value="{Binding Value, Mode=TwoWay}"
Maximum="{Binding VM.Question.NumericMaxValue}"
/>
(如@jason所述),因为滑块控件始终具有一个值。
为什么第二个绑定(Nullable<double>
属性)等于'Maximum
...'?
VM.Question
绑定是否不同?
即:
Value
要仅在控件的拇指完成“移动”后才更新值,应使用反应性扩展。 它使您可以操纵事件并选择一个系列的“最后一个”:
Rx for Xamarin forms presentation
我让您查看并检查更多详细信息...