Binding概念理解
在WPF(Windows Presentation Foundation)中,Binding是一种机制,用于在UI元素(如控件、数据)和数据源之间建立关联。它允许将UI元素的属性(如文本、颜色、可见性等)与数据源(如对象、集合、数据库)中的数据进行绑定,以便在数据发生变化时,UI元素能够自动更新。 WPF Binding可以用于实现MVVM(Model-View-ViewModel)架构,通过将视图(View)和视图模型(ViewModel)中的属性绑定到数据模型(Model)中的数据,实现了数据驱动的UI更新。这种方式可以将UI的逻辑和数据分离,提高了代码的可维护性和可测试性。Binding可以在XAML中声明,也可以在代码中动态创建。通过Binding,可以实现单向绑定、双向绑定、一次性绑定等不同的绑定模式,以满足不同的需求。总之,WPF Binding是WPF框架中非常重要的一部分,它提供了一种简单而强大的机制,用于将UI元素和数据源之间建立关联,实现数据驱动的UI更新。
1、DataContext绑定
以下展示两种常见的绑定
使用d:DataContext="{d:DesignInstance 命名空间:viewModel类}"可以绑定当前xaml与其对应的viewModel类,这个仅用于可以在xaml中转到绑定的属性的定义,实际绑定还需要使用上面两种方式。
2、绑定到控件
Binding后面省略,TextBlock会调用DatasContext对象的ToString方法,{Binding .}与省略相同。Binding 后面加字段名称,可以绑定对应字段
还可通过StringFormat进行拼接和格式
3、使用Source绑定源
Source绑定源一般与<Window.Resources>(资源词典)一起使用。在资源词典里面带有key的都可以访问到。枚举、静态变量、常量访问使用x:Static。
4、使用ElementName绑定源
可以通过控件的名称进行绑定。以下为将一个TextBlock的Text与TextBox的Text绑定
TextBlock.ToolTip由于脱离了Window所在的可视化树,在一个新的PopupRoot,所以要使用Source进行绑定。同理的还有DataGrid的DataGrid.Columns下的DataGridTextColumn
5、使用RelaticeSource绑定源
相对源,可以通过控件类型来绑定父级的属性,如下是将TextBlock的Text绑定Window的Top值。
对于嵌套类型的情况,可通过AncestorLevel来指定层级(往上找到的第几个)
如果要绑定同级的,可以通过RelativeSource先找到父级,再通过Path=Children进行指定。
绑定自己 Self
6、TargetMullValue与FallbackValue
对于不是开始就指定的值,可以通过TargetNullValue指定一个默认值。
绑定失败的可以指定一个值,比如绑定的字段在DataContext中无。
7、MultiBinding绑定多个
可以使用MultiBinding绑定多个字段。