WPF学习笔记(7)数据绑定DataContext
Binding类的Source属性适合用于指定某个属性绑定的源对象,需要在每个控件上都显示指定绑定源、操作繁琐。通常用于指定某一控件的默认数据上下文,会被该控件及其所有子控件继承和使用,如果几个控件需要绑定到同一个源,使用DataContext将更加简洁。set;set;set;set;set;
·
数据绑定之DataContext
一、DataContext概述
Binding类的Source属性适合用于指定某个属性绑定的源对象,需要在每个控件上都显示指定绑定源、操作繁琐。
DataContext通常用于指定某一控件的默认数据上下文,会被该控件及其所有子控件继承和使用,如果几个控件需要绑定到同一个源,使用DataContext将更加简洁。
官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.frameworkelement.datacontext?view=netframework-4.8
二、实例学习
建立如下类,作为数据源:
public class Contact
{
public String City { get; set; }
public String Phone { get; set; }
}
public class Teacher
{
public String Name { get; set; }
public Contact Contact { get; set; }
public ArrayList arrayList { get; set; }
}
在XAML界面实例teacher对象为Window元素的数据上下文,并创建Text的绑定,代码如下:
<Window.DataContext>
<local:Teacher Name="张三">
<local:Teacher.Contact>
<local:Contact City="北京" Phone="010-12345567"/>
</local:Teacher.Contact>
<local:Teacher.Skill>
<collections:ArrayList>
<system:String>C++</system:String>
<system:String>Java</system:String>
</collections:ArrayList>
</local:Teacher.Skill>
</local:Teacher>
</Window.DataContext>
<Grid>
<TextBox x:Name="TextBox" Text="{Binding Path=Name}" />
<TextBox x:Name="TextBox1" Text="{Binding Name}" />
<TextBox x:Name="TextBox2" Text="{Binding Contact.Phone}" />
<TextBox x:Name="TextBox3" Text="{Binding Skill[0]}" />
</Grid>
程序运行结果展示如下:

通常情况下,一个UI元素(如一个窗口、控件等)只能有一个 DataContext。
接下来新建窗口,演示Binding有多种写法代码如下:
- 使用“.”代表访问源
- 省略Path
- 完全省略源,TextBox需修改Mode把TwoWay为OneWay
- TextBlock控件的Mode默认为OneWay,可省略Mode
程序运行结果展示如下:

<Window.DataContext>
<system:String>这是一个字符串</system:String>
</Window.DataContext>
<Grid>
<TextBox x:Name="TextBox" Text="{Binding Path=.}" HorizontalAlignment="Left" Margin="268,59,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="150" Height="32" FontSize="18"/>
<TextBox x:Name="TextBox1" Text="{Binding .}" HorizontalAlignment="Left" Margin="268,120,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="150" Height="32" FontSize="18"/>
<TextBox x:Name="TextBox2" Text="{Binding Mode=OneWay}" HorizontalAlignment="Left" Margin="268,185,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="150" Height="32" FontSize="18"/>
<TextBlock x:Name="TextBlock" Text="{Binding}" HorizontalAlignment="Left" Margin="268,250,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="32" Width="150" FontSize="18"/>
</Grid>

总结
- 一个UI元素(如一个窗口、控件等)只能有一个 DataContext。
- Binding的四种写法
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)