binding之component

Knockout.js 3.2.0 版本更新带来组件和自定义元素的支持,便于创建可重用的视图模型与模板。新增 ko.pureComputed 功能提高性能和内存管理,同时引入 textInput 绑定,优化 value 和 checkedValue 的使用。

该节的例子应该使用Knockout3.2.0以上版本,因为这次更新最大的改进之一就是引入了组件(Component)的概念,通过配合使用组件与自定义元素(Custom element),你能够方便地将应用分解为可重用的小部件(widget)、区域(section)或页面。

组件能够将一个视图模型(View model)与一个模板组合为一个封装包,这方面的例子可以是一个导航栏或者是进度面板。你可以使用“组件绑定”将这些组件与普通的div元素绑定在一起,不过还有一种更为强大的用法存在:你可以在应用中使用自定义元素



此次更新还带来了其它一些改进:

  • ko.pureComputed - 这是ko.computed的一种变体形式,它提供了更好的性能与内存管理方式。这一特性只对推断式可观察对象(computed observable)有效,这种对象在推断结果时不会造成任何副作用,而且它的结果完全是由应用中其它可观察对象的值产生的。换句话说,这一特性要求这种推断式可观察对象的值不能够受到任何来自于整个依赖跟踪体系结构之外的隐藏值或是状态值的影响。
  • 新的“textInput”绑定,它能够将元素或 
  • 对于复选框与单选框控件,现在使用“value”绑定将能够获得与使用“checkedValue”绑定相同的行为了。这是由于许多人会在应该使用“checkedValue”绑定时错误地使用了“value”绑定,因此这一改动能够保证在你犯错时依然提供了你所期望的行为。而“checkedValue”这一绑定依然可以继续使用。
在C#中,`Binding` 类型是用于数据绑定的核心类之一,尤其是在使用Windows Forms或WPF等UI框架时。`Binding` 类用于将UI控件的属性绑定到数据源(例如对象的属性、数据库、集合等),从而实现UI与数据之间的自动同步。 ### Binding 类的基本用法(以 Windows Forms 为例): ```csharp // 创建一个简单的数据源类 public class Person { public string Name { get; set; } public int Age { get; set; } } // 在窗体中使用 Binding public partial class MainForm : Form { private Person person = new Person { Name = "张三", Age = 30 }; public MainForm() { InitializeComponent(); // 创建 BindingSource BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = person; // 将 TextBox 绑定到 Name 属性 textBoxName.DataBindings.Add("Text", bindingSource, "Name", false, DataSourceUpdateMode.OnValidation); // 将 NumericUpDown 控件绑定到 Age 属性 numericUpDownAge.DataBindings.Add("Value", bindingSource, "Age", false, DataSourceUpdateMode.OnValidation); } } ``` ### Binding 的常见参数说明: ```csharp DataBindings.Add( string propertyName, // 控件上的属性名(如 Text) object dataSource, // 数据源对象 string dataMember, // 数据源中的属性名(如 Name) bool formattingEnabled, // 是否启用格式化 DataSourceUpdateMode updateMode, // 数据更新模式(如 OnValidation) object nullValue // 可选:当数据为 null 时的替代值 ); ``` ### Binding 的作用: - **数据同步**:当数据源中的属性值发生变化时,绑定的控件会自动更新;反之亦然。 - **简化代码**:避免手动更新 UI 控件或数据源,提高开发效率。 - **支持验证和格式化**:可以处理数据格式转换和输入验证。 --- ### 常见 Binding 类型: | 类型 | 描述 | |------|------| | `Binding` | 基础绑定类,用于单个属性绑定 | | `BindingList<T>` | 支持通知更改的泛型列表,用于绑定集合 | | `INotifyPropertyChanged` | 接口,用于通知属性更改,常用于 MVVM 模式 | | `DependencyProperty`(WPF) | 用于 WPF 中的数据绑定机制 | | `ObservableCollection<T>`(WPF / UWP) | 支持自动通知集合更改的集合类 | --- ### Binding 常见问题: 1. **为什么绑定后数据不更新?** - 答:数据源未实现 `INotifyPropertyChanged` 接口,或未使用 `BindingSource`。 2. **如何实现双向绑定?** - 答:设置 `DataSourceUpdateMode` 为 `OnPropertyChanged` 或 `OnValidation`。 3. **如何绑定集合数据?** - 答:使用 `BindingList<T>` 或 `ObservableCollection<T>`。 4. **如何格式化绑定数据?** - 答:设置 `formattingEnabled` 为 `true` 并使用 `Format` 事件进行格式化。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值