Xamarin表单:如何呈现相同的输入B条目中的条目文本,反之亦然

时间:2017-06-01 18:23:27

标签: xamarin xamarin.forms textchanged bindable

如何在B条目的条目文本中输入文本,反之亦然?

我对Xamarin表单开发非常陌生。

ViewModal:下面是Entry字段可绑定对象,这里每个字段都有其十进制验证。 要求:如果条目文本发生变化,B条目文本应根据输入的文本进行更改,反之亦然。

在这里,我在处理OnPropertyChanged方面遇到了问题。

    private string _inputValues_PercentTimer;
    public string InputValues_PercentTimer
    {
        get { return _inputValues_PercentTimer; }
        set
        {
            _inputValues_PercentTimer = CalculationActions.DecimalValidation(value, _inputValues_PercentTimer, 1, 0.0, 100.0, "");
            OnPropertyChanged("InputValues_PercentTimer");
        }
    }


    private string _inputValues_AppDepth;
    public string InputValues_AppDepth
    {
        get { return _inputValues_AppDepth; }
        set
        {

            _inputValues_AppDepth = CalculationActions.DecimalValidation(value, _inputValues_AppDepth, 3, 0.000, 100.00, "");
            OnPropertyChanged("InputValues_AppDepth");
        }
    }

2 个答案:

答案 0 :(得分:0)

  

抱歉英语不好

使用A条目与您的viewmodel绑定,并在B条目中,进行交叉引用绑定(我不确定这是正确的术语)。

This link是关于绑定基础知识的,它可能对您有帮助。

以下是一些XAML代码: ...

<Slider x:Name="sdrMediumBattery" 
    HorizontalOptions="FillAndExpand" 
    Value="{Binding MediumBattery}"`
    Maximum="100" 
    Margin="0,0,0,10"/>

...

<Label x:Name="lblMediumBattery" 
    BindingContext="{x:Reference sdrMediumBattery}"
    FontSize="Large" 
    HorizontalTextAlignment="Center" 
    WidthRequest="50" 
    Text="{Binding Value, StringFormat='{0:#00}'}"/>

我正在使用'sdrMediumBattery'视图(滑块)中的属性'Value'并绑定到Label的'Text'属性。滑块绑定到我的viewmodel。

答案 1 :(得分:0)

我已经解决了这个问题,防止了依赖属性之间的死锁。谢谢大家的支持。

private string _inputValues_PercentTimer;
public string InputValues_PercentTimer
{
    get { return _inputValues_PercentTimer; }
    set
    {
        if (_inputValues_PercentTimer != value && !string.IsNullOrEmpty(value))
        {
            _inputValues_PercentTimer = CalculationActions.DecimalValidation(value, _inputValues_PercentTimer, 1, 0.0, 100.0, "");
            double calRes = 5 + double.Parse(_inputValues_PercentTimer);
            _inputValues_AppDepth = calRes.ToString();
            OnPropertyChanged("InputValues_AppDepth");
            OnPropertyChanged("InputValues_PercentTimer");
        }
    }
}

private string _inputValues_AppDepth;
public string InputValues_AppDepth
{
    get { return _inputValues_AppDepth; }
    set
    {
        if (_inputValues_AppDepth != value && !string.IsNullOrEmpty(value))
        {
            _inputValues_AppDepth = CalculationActions.DecimalValidation(value, _inputValues_AppDepth, 3, 0.000, 100.00, "");
            double calRes = 5 + double.Parse(_inputValues_AppDepth);
            _inputValues_PercentTimer = calRes.ToString();
            OnPropertyChanged("InputValues_PercentTimer");
            OnPropertyChanged("InputValues_AppDepth");
        }
    }
}