如何定义Xamarin.Forms中彼此更新的两个可绑定属性?

快乐猪375

我想声明一个Xamarin.Forms中的BindableProperty另一个便利属性BindableProperty设置一个将更新另一个。我不会提供完整的上下文和实际类型,但是一个非常简单易懂的方案如下:

我有一个定义Number和Numberp1属性的视图。Number是可绑定的,而Numberp1属性在这里充当了便捷属性。

//Definition
public class MyView : ContentView
{
    public static BindableProperty NumberProperty = BindableProperty.Create(nameof(Number), typeof(int), typeof(MyView));

    public int Number { get => (int)GetValue(NumberProperty); set => SetValue(NumberProperty, value); }

    public int Numberp1 { get => Number + 1; set => Number = value - 1; }
}

//Usage
<local:MyView Number="{Binding Number}"/>

一切顺利,直到客户发现Numberp1不可绑定,并希望我使其可绑定。

<local:MyView Numberp1="{Binding Numberp1}"/>
//error : No property, bindable property, or event found for 'Numberp1', or mismatching type between value and property.

我将如何使这两个属性可绑定但又使它们彼此更新?我尝试使用Converters进行调查,但它们似乎仅在Binding中可用,而不在BindableProperty定义中可用

Cherry Bu-MSFT

一切顺利,直到客户发现Numberp1不可绑定,并希望我使其可绑定。

请为Numberp1创建另一个BindableProperty,BindableProperty'Numberp1Property'的占位符应始终与不带'Property'的名称匹配。

   public static BindableProperty NumberProperty = BindableProperty.Create(nameof(Number), typeof(int), typeof(MyView11), null, propertyChanged: OnNumberChanged);

    private static void OnNumberChanged(BindableObject bindable, object oldValue, object newValue)
    {
        var num = (MyView11)bindable;
        num.Number = (int)newValue;
    }

    public static BindableProperty NumberpProperty = BindableProperty.Create(nameof(Numberp), typeof(int), typeof(MyView11), null, propertyChanged: OnNumber1Changed);

    private static void OnNumber1Changed(BindableObject bindable, object oldValue, object newValue)
    {
        var num = (MyView11)bindable;
        num.Numberp = (int)newValue;
    }

    public int Number
    {
        get => (int)GetValue(NumberProperty);
        set => SetValue(NumberProperty, value);
    }

    public int Numberp
    {
        get => Number + 1;
        set => Number = value - 1;
    }

为BindableProperty添加propertyChanged事件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 DataTemplateView 中实现“Xamarin.Forms 两个可绑定属性”?

如何使 xamarin 自定义控件中的 2 个可绑定属性相互识别?

Xamarin Forms将两个属性从单个控件绑定到不同的上下文

如何在Xamarin.Forms中为自定义组件创建可绑定命令?

如何在Xamarin表单中绑定两个控件

如何在Xamarin Forms中连接两个表?

如何将对象作为可绑定属性传递给Xamarin.Forms自定义控件

Xamarin Forms:如何将数据从两个视图模型正确绑定到单个视图?

在python中,如何创建两个彼此迭代的列?

如何检查Xamarin.Forms中IsPropertyChanged方法内可绑定属性的设置?

如何重用Xamarin.Forms的父ContentView中定义的样式

如何填充在 caruselpage Xamarin.Forms 中定义的集合视图

如何将单个属性绑定到WPF中两个控件的选择?

如何在Xamarin表单中创建自定义可绑定视图?

Xamarin Forms 自定义控件和可绑定属性无法按预期工作

如何在Xamarin.Forms项目中调用Xamarin.Droid中定义的函数?

Xamarin.Forms VoiceOver在两个垂直堆栈中

如何使用BindingSource在DataGridView的单列中绑定导航属性(二级模型的两个属性)?

如何使用OData模型将两个数据属性直接绑定到一个控件属性中?

在自定义wxWidgets小部件中彼此相邻的两个按钮

如何向我在 Xamarin 中定义的命令添加参数?

如何在Xamarin表单中自定义标题模板

如何在 Xamarin 中创建自定义控件?

如何在 Xamarin 中自定义 ContentPage 标题?

如何在 xamarin 表单中自定义 ZXingDefaultOverlay

如何通过可绑定属性设置 Xamarin.Forms Shell 搜索的可见性属性?

在 WPF XAML 中,如何使用数据触发器绑定文本块中的两个属性?

具有可绑定属性的自定义视图在Xamarin.Forms SAP上未正确绑定

如何在knex中添加两个绑定参数?