1、 OneWay:从源的改变更新目标的属性
2、 TwoWay:源与目标相互改变
3、 OneTime:只根据源来设置目标,以后都不会改变
4、 OneWayToSource:目标的改变使源发生变化
5、 Default:可以单向亦可双向,是靠被指定的源或目标是否有get或set指定,所以绑定的话是需要选择上面4个中的一个模式进行绑定,根据所需来选择,不选则默认为Default
在MVVM模式中,界面的目标数据和后台代码中的数据源一般需要进行相互绑定,即改变界面目标数据时数据源会发生变化,改变数据源时界面显示的目标数据会发生变化。前者的实现十分简单,只需要将后台数据属性添加上getter和setter,在前台xaml绑定相应的数据属性即可,当修改界面的目标数据时,监控到后台数据也发生了相应的变化。需要额外的效果可以参考上述五种绑定模式。而要使目标数据随着数据源的改动而刷新,除了直接更改界面目标数据外,还可以实现后台直接对数据源的修改直接更新到数据上,此时就需要借助一些其他方法达到目的。
public event PropertyChangedEventHandler PropertyChanged;private string title = "App";public string Title{get { return title; }set {title = value;if (this.PropertyChanged != null){this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Title"));}}}
还有另外一种写法,实现接口后添加NotifyPropertyChanged方法,在setter中触发该方法即可,代码如下:
private string title = "App";public event PropertyChangedEventHandler PropertyChanged;public string Title{get { return title; }set {title = value;if (this.PropertyChanged != null){this.title = value;NotifyPropertyChanged("Title");}}}private void NotifyPropertyChanged(String info){if (PropertyChanged != null){PropertyChanged(this, new PropertyChangedEventArgs(info));}}
[AddINotifyPropertyChangedInterface]public class MainWindowViewModel{public string Title { get; set; } = "App";//后续省略}
private string title = "App";public string Title{get { return title; }set {SetProperty(ref title ,value);}}
以上是目前我所用到的绑定的后台编辑方法,前台的xaml直接绑定后台数据即可,如果需要其他效果可以参考Binding的其他属性,例如Mode,NotifyOnTargetUpdated等等后续使用再详细描述
本文发布于:2024-01-31 20:05:19,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670272131034.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |