2017-08-02 157 views
2

我試着寫與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是正確的,因爲將同一個屬性綁定到標籤可以顯示值。

回答

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>

+0

我加了名字到父視圖,而不是,因爲這意味着我不需要重新綁定或命名該項控制,並使得整個訪問查看萬一您需要在多個地方使用它。 感謝您的幫助! –