我试图用max-和min-值写一个简单的行为来验证在一定范围内输入的值:
<Entry Text="{Binding Quantity, Mode=TwoWay}">
<Entry.Behaviors>
<ui:ValueInRangeValidator x:Name="QtyValidator" MinValue="1" MaxValue="10"/>
</Entry.Behaviors>
</Entry>
这工作正常,但在尝试添加绑定时,例如。 MaxValue="{Binding MaxVal}"
该值保留为默认值。
我在我的行为中使用了以下内容:
public static BindableProperty MaxValueProperty =
BindableProperty.Create("MaxValue", typeof(decimal?), typeof(ValueInRangeValidator));
public decimal? MaxValue
{
get { return (decimal?)GetValue(MaxValueProperty); }
set
{
SetValue(MaxValueProperty, value);
OnPropertyChanged();
}
}
我还尝试在BindableProperty上设置属性更改事件,但它似乎永远不会触发。我知道viewmodel是正确的,因为将相同属性绑定到标签会显示值。
答案 0 :(得分:1)
尝试这样的事情:
<Entry x:Name="Entry1"
BindingContext="{Binding}"
Text="{Binding Quantity,
Mode=TwoWay}">
<Entry.Behaviors>
<ui:ValueInRangeValidator x:Name="QtyValidator"
MinValue="1"
MaxValue="{Binding BindingContext.MaxVal, Source={x:Reference Entry1}}"/>
</Entry.Behaviors>
</Entry>