首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在Xamarin中,可以通过使用BindableProperty来实现自定义控件中的两个可绑定属性相互识别。BindableProperty是Xamarin.Forms中用于创建可绑定属性的类。

要让两个可绑定属性相互识别,首先需要在自定义控件的代码中定义这两个属性。可以使用BindableProperty.Create方法创建BindableProperty对象,并指定属性的名称、属性类型、控件类型以及默认值等信息。

例如,假设我们要创建一个自定义控件,其中包含两个可绑定属性:Text和BackgroundColor。可以在控件的构造函数中定义这两个属性,如下所示:

代码语言:txt
复制
public class CustomControl : View
{
    public static readonly BindableProperty TextProperty =
        BindableProperty.Create(nameof(Text), typeof(string), typeof(CustomControl), string.Empty);

    public static readonly BindableProperty BackgroundColorProperty =
        BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(CustomControl), Color.Default);

    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }

    public Color BackgroundColor
    {
        get { return (Color)GetValue(BackgroundColorProperty); }
        set { SetValue(BackgroundColorProperty, value); }
    }
}

在上述代码中,我们使用了BindableProperty.Create方法来创建TextProperty和BackgroundColorProperty属性,并指定了它们的名称、类型、控件类型以及默认值。

接下来,在XAML中使用自定义控件时,可以通过绑定语法将这两个属性与ViewModel中的属性进行绑定。例如:

代码语言:txt
复制
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:local="clr-namespace:YourNamespace"
             x:Class="YourNamespace.YourPage">
    <local:CustomControl Text="{Binding YourTextProperty}"
                         BackgroundColor="{Binding YourBackgroundColorProperty}" />
</ContentPage>

在上述代码中,我们将CustomControl的Text属性和BackgroundColor属性分别与ViewModel中的YourTextProperty和YourBackgroundColorProperty进行了绑定。

这样,当ViewModel中的属性值发生变化时,自定义控件中的对应属性也会自动更新。同时,当自定义控件中的属性值发生变化时,ViewModel中的对应属性也会相应更新。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云的官方文档和开发者社区,以获取与Xamarin开发相关的云计算解决方案和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于自定义控件设计时如何把属性写入aspx中的研究(上)

如何通过继承GridView来修改在设计时绑定数据源时自动生成的ASP.Net代码?...经过跟踪发现:在设计时,vs会生成这个控件的两个实例,具体干什么我不知道,在取消数据源绑定或者重新绑定数据源的时候,其中一个实例B被销毁,又有新的实例被创建,如此反反复复。...在绑定数据源时,既然IDE写入到aspx的列头是英文,那么,我可以肯定,它读取的是A中的列信息,因为,除了A以外,别的所有实例都已经被我捕获到,并把列头改为了中文,所以,IDE不可能从实例A取列信息。...但是,我有纳闷了,A从来不调用CreateColumns方法,它哪里来的列信息? 最后只有一种可能,那就是:那些属性,是被复制过去的,或者在GridViewDesigner中创建的。...然后,在ide中使用这个控件,绑定数据源,取消绑定,多试几次,就可以得到足够的日志了。

2.7K80

关于自定义控件设计时如何把属性写入aspx中的研究(下)

虽然这一篇已经是“下”了,但是我并没有研究清楚“自定义控件设计时如何把属性写入到aspx中”这个问题。 不过,我选择了另外一条路,做了点手脚,让控件把属性写入到aspx中去了。...其实,即使有人肯定的告诉我,在上篇中提到的ControlSerializer类的SerializeControl方法就是用于把控件属性写入到aspx中去的,我也实在没办法利用它,它的位置太“深”了。...重载该属性,并输出日志,果然,有很少的几次调用。不过,已经够了。 我的做法就是,在这个属性的get方法里面,强制改变各列的属性,再返回。...获取表示 GridView 控件中列字段的 DataControlField 对象的集合。         ...我只需要在绑定数据源之后改变就可以了。

2.2K50
  • C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码

    今天的学习内容? 只讲一个,关于Xamarin.Forms针对各个平台如何进行可定制化的控件操作. 也就是针对某个平台的细颗粒化操作. 废话不多说,我们直接开始....2.为什么需要自定义渲染器 因为在不使用自定义渲染器的情况下更改Xamarin.Forms控件的外观是颗粒度较粗的....我们找到一个Xamarin控件,比如ProgressBar进度条..它在Xamarin中,可控的属性应该就只有Progress进度而已.....这时候就要用自定义渲染器了,到特点的平台去优化它 首先我们在可移植的库中自定义一个ProgressBar,方便Xamarin.Forms调用,代码如下: public class MyProgressBar...我们可以看到,在安卓库中,它就继承了安卓widget的原生进度条,那么,原生进度条的所有属性,我们就都是可以用的了. 比如我们在代码中写的 "ScaleY" 这种属性和SetPadding这种方法.

    2.4K100

    Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面

    本文将会介绍整个Xamarin.Forms框架的核心和基础概念,包括: · 如何安装 Xamarin.Forms · 在 Visual Studio和Xamarin Studio中建立 Xamarin.Forms...的项目 · 如何使用Xamarin.Forms的控件 · 如何在页面之间进行导航 · 如何进行数据绑定 系统需求 iOS : 由于Apple限制iOS应用程式编译都需要透过Xcode, 因此需要1台MAC...堆栈式布局的子元素会按照添加到容器中的顺序一个接一个被摆放,堆栈式布局有两个方向:竖直与水平方向。 下面的代码会把三个 Label 控件添加到 StackLayout 中去。...通过数据绑定Xamarin.Forms的控件可以展示数据层的数据,还可以通过编辑控件将更改同步到数据层。...是什么,以及如何使用 Xamarin.Forms 来构建跨平台的应用,我们从如何安装 Xamarin.Forms,到如何创建一个 Xamarin.Forms 项目,如何构建用户界面,如何进行数据绑定以及如何切换页面

    13K70

    Xamarin.Form 5.0: 新功能和控件以及调试改进

    此功能必须在设置中启用,并且(现在)需要付费的 Apple 开发人员计划订阅。设备连接到 Windows PC 后,Visual Studio 会识别并设置设备作为调试的目标设备。...其他已宣布的功能包括实时可视化树(它有助于在开发过程中可视化应用中的元素结构)和 XAML 绑定诊断窗格,该窗格显示哪些 XAML 绑定不正确,需要修复。...通过GitHub项目页面上的拉取请求和评论对社区做出大量贡献,即将发布的 Xamarin.Forms 5.0 包含以下新功能和控件。...支持 SVG 路径; 控件模板:为本机控件定义自定义模板,丰富其可视性方面。...此外,引入EmptyView ,以显示绑定数据不可用时的替代内容; 轻扫视图:在任何控件上添加上下文菜单按钮; 拖放手势:UI 项目可以拖放到屏幕的任何区域。

    3.3K20

    Reactive UI -- 反应式编程UI框架入门学习 (转载非原创)

    在MVVMLight中,依赖属性和命令的绑定一般都是放在Xaml中,并且大部分情况下不需要给控件定义Name属性。...在强绑定方式中,需要给控件定义他的Name属性。 1 在界面后台的cs文件中使用强绑定方式。...12 //BtnContent是ViewModel中的属性,btnOpenFile是界面中的控件,并指定控件需要绑定的依赖属性 this.OneWayBind(ViewModel, vm => vm.BtnContent...2.控件和后台属性的对应关系更为直观,提高代码的可阅读性。 当然也有一定的缺陷,会增加代码量,并且增加View和ViewModel的耦合性。...ReactiveCommand的定义与MVVMLight大同小异。 但是在ReactiveUI中,还有更简单方便的定义可通知的属性,使用标记[Reactive]。

    2.3K20

    【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    ,以绑定包含公共属性,元素名称,索引属性路径(集合),附加属性和强制转换属性的路径。...XAML设计器建议的操作(v16.5预览): 在此版本中,我们提供了一个名为“建议的操作”的新预览功能,当在 XAML 设计器中选择控件时,可以轻松访问常用属性。...通过这些改进,.NET Core 3 项目可以引用包含自定义 UWP XAML 控件的 UWP 项目。...Windows 社区工具包 v6(Microsoft.Toolkit.Wpf.UI.XamlHost v6.0)中附带的 WindowsXamlHost 控件可以使用这些自定义控件。...合并资源字典 “编辑模板”现在可与第三方控件中的控件一起使用: 即使“编辑模板”现在不是源代码解决方案的一部分,也可以创建控件模板的副本。

    7.4K30

    张高兴的 Xamarin.Forms 开发笔记:TapGestureRecognizer 的简单介绍与应用

    Forms 里的大多数控件都继承自 View 类,而 View 类中有一个公共属性 GestureRecognizers,因此控件都可以添加各种手势识别。...当然手势不止 Tap 这一种,更多的可以在 Xamarin 的指南中了解:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals...gestures/ public IList GestureRecognizers { get; } 二、用法   在说用法之前,首先要搞清楚我们需要关注 Tap 的哪些属性...对于 MVVM 涉及的绑定,可以去官方找找。 2....为没有 Clicked 事件的控件添加假的 Clicked 事件   换句大白话来说,就是点击一个控件触发一个事件。这里以 Label 举例,点击 Label 以“0”和“1”变化。

    1K20

    张高兴的 Xamarin.Forms 开发笔记:TapGestureRecognizer 的简单介绍与应用

    Forms 里的大多数控件都继承自 View 类,而 View 类中有一个公共属性 GestureRecognizers,因此控件都可以添加各种手势识别。...当然手势不止 Tap 这一种,更多的可以在 Xamarin 的指南中了解:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals...gestures/ public IList GestureRecognizers { get; } 二、用法   在说用法之前,首先要搞清楚我们需要关注 Tap 的哪些属性...对于 MVVM 涉及的绑定,可以去官方找找。 2....为没有 Clicked 事件的控件添加假的 Clicked 事件   换句大白话来说,就是点击一个控件触发一个事件。这里以 Label 举例,点击 Label 以“0”和“1”变化。

    80370

    Dart中的const,Flutter,Dart,React Native

    Flutter 采取不同的方法,试图使移动开发更好。 它提供了一个开发人员使用的应用程序框架和一个可移植的运行时引擎。该框架建立在 Skia 图形库上,提供实际呈现的部件,而不仅仅是原生控件的包装。...对于 Xamarin 的跨平台实现,有 Xamarin.Forms。 尽管该技术与 React Native 非常不同,但它在概念上提供了一种类似的方法,为原生控件提供一个抽象层。...通过允许更快的迭代,热加载可显着提高开发效率。 测试 Flutter 包含一个 WidgetTester 实用程序,用于与测试中的部件进行交互。...这与大多数其他应用程序框架不同,它们将属性和行为不一致地关联起来,有时将属性和行为从层次结构中的其他组件附加到控件本身,有时自身控制属性和行为。...一些布局部件用于子部件的垂直或水平对齐,扩展部件以填充特定空间,将部件限制到特定区域,将它们在屏幕上居中,并允许部件相互重叠。 两个常用的部件是行和列。

    6300

    Succinctly 中文系列教程(三)20220109 更新

    六、性能优化 七、常见陷阱 八、附录 A:使用其它数据库 九、附录 B:不在 EF2.0 中的特征 Succinctly ForceCom 教程 零、简介 一、Force.com 概览 二、客户端自定义对象...Web 开发者的 VS2017 Succinctly 使用函数式语言构建移动原生应用教程 一、简介 二、项目结构 三、放置小部件 四、创建自定义控件 五、添加同步融合控件 六、将 PDF、Word 和...Excel 功能从 Syncfusion 添加到 CSCS 七、CSCS 中的文本到语音和语音识别 八、CSCS 中的应用内购买 九、添加移动广告和高级主题 十、附录 Succinctly 面向 MacOS...零、简介 一、开始学习 Xamarin.Forms 二、平台间代码共享 三、使用 XAML 构建用户界面 四、使用布局组织 UI 五、Xamarin.Forms 常用控件 六、页面和导航 七、资源和数据绑定...跨平台共享代码 三、使用 XAML 构建用户界面 四、实用布局组织 UI 五、Xamarin.Forms 常用控件 六、页面和导航 七、资源和数据绑定 八、访问平台特定的 API 九、管理应用生命周期

    18.4K20

    ComponentOne.NET仪表板布局控件 — 实现可视化数据大屏展示

    概述 .NET开发领域的总体趋势是互操作性,葡萄城全功能 .NET控件集 ComponentOne 在2018将延续这一趋势:无论是 .NET平台,ASP.NET Core,Xamarin还是未来计划中的....NET控件并快速构建可交互的动态仪表板。...此外,还可以绑定到任何数据源中获取控件或数据类型,并应用多个条件进行过滤。...靶心图控件(BulletGraph) BulletGraphs控件可作为仪表板和仪表盘样式的补充,通常不会显示过多的信息,因此不必占用太多空间资源,这样做的好处是让用户专注于核心进度而避免混杂无用且分散注意力的装饰...服务器端ODataCollectionView 服务器端ODataCollectionView将使控件能够绑定到ODATA服务,并且还可以在绑定到ODATA服务的控件中应用服务器端排序和过滤。

    5.3K20

    总结 Visual Studio 2019 发布以来 XAML 工具的改进

    这还挺好用的,一些很复杂的绑定现在也可以通过定义代码段来简化了。 ? 可并不是所有 IntelliSense 的改进都是好事。...扩展了对 WPF 和 UWP 的设计时数据支持 d: 前缀用于设置设计时的属性值,它只影响设计视图,不会编译到正在运行的应用中。在以前,d: 前缀只支持有限几个功能,例如 d:DataContext。...现在所有内置控件的每一个属性都可以用 d: 前缀设置(将来还可能增加对第三方控件的支持)。 ? 5....热重载、实时可视化树和实时属性资源管器是 WPF 开发者不会错过的重要功能,Visual Studio 2019 一直有逐渐改善它们的体验,现在这些功能已经支持 WPF、UWP、Xamarin、WInUI...在 Visual Studio 2019 中比较显著的改善是实时可视化树中的“仅我的 XAML”。

    2.3K30

    是时候开始用C#快速开发移动应用了

    从2015年接触Xamarin到至今已经2个年头,我对Xamarin的技能没有长进多少,但它却已经足够成熟到在跨平台移动开发工具中占有一席之地。...+ NavigationView  CollapsingLayout + NestedView + CardView ListView 与 RecyclerView  C#代码完成的那些事 控件与事件绑定...DrawerLayout + NavigationView  图3中的左侧菜单,主流APP必备,也是只要几行代码就可以了。 ? 在NavigationView的使用上,有两个属性需要注意一下。...5分钟就搞定了~ 控件与事件绑定 在VS操纵UI组件是一件非常简单的事。...只是在Activity中我们还需要手动通过FindViewById来找到这个UI组件。如果Activity代表了一整个View,那我们来看看在不同的View之间如何传递数据。

    2.6K60
    领券