WPF知识点全攻略07- 数据绑定(Binding)

数据绑定是WPF不得不提,不得不会系列之一

数据绑定简言之,就是把数据源的数据绑定到目标对象的属性上。目标对象可以是承自DependencyProperty的任何可访问的属性或控件,目标属性必须为依赖属性(下节讲),数据源可以是其他控件的属性,可以是对象实例、XAML 元素、ADO.NET Dataset、XML数据。

数据绑定的重点属性- Mode属性:

MSDN给出如下图标记了三种你来我往的数据流向。比较简单,看图就能明白。

数据绑定的重点属性- UpdateSourceTrigger属性:

当在实际项目使用TextBox输入数据时,可能会有TextBox.Text 的值没有及时反馈到源数据,加上UpdateSourceTrigger=“PropertyChanged”,就能及时通知反馈,但也会降低一些性能,毕竟一直干活谁都会累。

数据绑定的重点属性- Source属性:

可以自己定义数据,使用Source直接指定作为数据源。

<Window.Resources>
    <local:Person x:Key="myDataSource" PersonName="Joe"/>
</Window.Resources>
<Grid Width="200" Height="30" >
    <TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
</Grid>

数据绑定的重点属性- ElementName属性:

有些时候,需要直接指定绑定源,如控件A的属性A1要绑定到控件B的属性B1上:

<ComboBox x:Name="testCbb">
    <ComboBoxItem>123</ComboBoxItem>
    <ComboBoxItem>456</ComboBoxItem>
</ComboBox>
<TextBlock Text="{Binding ElementName= testCbb,Path=SelectedItem.Content}"></TextBlock>

数据绑定的重点属性- RelativeSource属性:

在自定义控件时,很多情况下目标控件属性和绑定源不在同一个层次,需要使用RelativeSource来指定绑定源的位置。

<Grid x:Name="g1" Background="Red" Margin="10">
    <DockPanel Name="d1" Background="Orange" Margin="10">
        <Grid x:Name="g2" Background="Yellow" Margin="10">
            <DockPanel Name="d2" Background="LawnGreen" Margin="10">
                <TextBox Name="textbox" FontSize="24" Margin="10"
                     Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Grid},AncestorLevel=1},Path=Name}"/>
            </DockPanel>
        </Grid>
    </DockPanel>
</Grid>

数据绑定的重点属性- Converter属性:

比如点击CheckBox显示或隐藏某些内容,代码如下。可以根据需要做各种转换,也可以绑定集合。

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool) value ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter,CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<Window.Resources>
    <local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"></local:BoolToVisibilityConverter>
</Window.Resources>

<Grid>
    <CheckBox x:Name="checkBox" Grid.Column="0"  Content="Test" />
    <Border Background="Red" Height="100" Width="100" Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter} ,ElementName=checkBox,Path=IsChecked}"></Border>
</Grid>

数据绑定的重点属性 - NotifyOnValidationError属性:

当该属性设为True时,会验证输入是否符合指定规则,若不符合则会提示相应错误。

<StackPanel>
    <TextBox x:Name="textBoxAge" Width="100">
        <TextBox.Text>
            <Binding Path="Age" NotifyOnValidationError="True" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <local:AgeRule Max="100" Min="0"></local:AgeRule>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
    <TextBlock Text="{Binding ElementName=textBoxAge, Path=(Validation.Errors)[0].ErrorContent}" />
</StackPanel>

对应WPF验证部分,比较复杂,可以定制各种报错提示,有机会单独记录下,此处不再深究。

原文地址:https://www.cnblogs.com/kuangxiangnice/p/11067276.html

时间: 2024-10-29 16:25:28

WPF知识点全攻略07- 数据绑定(Binding)的相关文章

WPF知识点全攻略05-XAML内容控件

此处简单列举出布局控件外,其他常用的控件: Window:WPF窗口 UserControl:用户控件 Page:页 Frame:用来浏览Page页 Border:嵌套控件,提供边框和背景. Button:按钮控件 Calendar:日历.挂历 CheckBox:多选控件 ComboBox:下拉控件 ContentControl:内容控件,可以用于加载自定义UserControl控件 DataGrid:数据列表控件 DatePicker:日期选择器 DocumentViewer:文档查看,可以用

WPF知识点全攻略06-WPF逻辑树(Logical Tree)和可视树(Visual Tree)

介绍概念之前,先来分析一段代码: xaml代码如下: <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsof

WPF知识点全攻略04-XAML页面布局

名称 说明 Canvas 使用固定坐标绝对定位元素 StackPanel 在水平或竖直方向放置元素 DockPanel 根据外部容器边界,自动调整元素 WrapPanel 在可换行的行中放置元素 Grid 根据不可见的表格在行和列中排列元素,最常用 UniformGid 在不可见的相同尺寸的表格中放置元素 1.Canvas布局 <Canvas> <Rectangle Canvas.Left="50" Canvas.Top="50" Width=&q

页面数据绑定全攻略

在做Web开发时,都会遇到将后台的数据显示在前台页面的情况.几种比较典型的应用实例: 方法1:<%#%> 后台代码: namespace WebApplication3{    public partial class Index : System.Web.UI.Page    {        public string name = "ltp";        public string sex = "man";        public stri

webBrowser中操作网页元素全攻略

webBrowser中操作网页元素全攻略 2012-12-20 14:21 188人阅读 评论(0) 收藏 举报 1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBrowser1.Document.GetElementById("控件ID").InnerText; 或webBrowser1.Document.GetElementById("控件ID").GetAttr

Emacs安装配置全攻略之一编译安装简单配置

/******************************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb_driver/article/details/29407717,作者:gqb666 /***************

SQL Server 备份和还原全攻略

原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性).完全备份也叫完整备份. 差异备份: 差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件.(差异备份过程中,只备份有标记的那些选中的文件和文件夹.它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性). 增量备份: 增量备份是针对于上一次备份(无论是

工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!

原文:工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)! 如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此非常感谢大家支持.在回复中我发现很多朋友还在使用老的IDE,当然有些是公司决定的,和个人无关.但是有条件的话还是新的IDE比较适合大家,毕竟新的IDE会有新的特性来减少大家编程时间,

活水渠 - 云影院之云时代看片全攻略

本文讨论了大数据时代最热门的两大应用之一的云计算(另一应用是物联网)对网络视频观看体验的具体影响,以及在观看方式上区别于传统下载方式的优点. 一.视频门户类网站 此类网站以优酷.乐视等为代表,主营传统网络视频业务,使用浏览器进行直接点击链接进行观看. 优点:电视节目丰富.观看技术手段简单.大型网站服务器稳定 缺点:看不了热门电影,精华视频要收费,免费用户要看广告 解决:浏览器辅助工具或插件解决收费和广告问题,在此基础上还诞生了视频门户网 站的入口集成网站,每天看云帆可免VIP直接观看主流视频门户