iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >WPF数据绑定Binding的用法
  • 437
分享到

WPF数据绑定Binding的用法

2024-04-02 19:04:59 437人浏览 安东尼
摘要

一、简介 WPF的核心理念是变传统的UI驱动数据变成数据驱动UI,支撑这个理念的基础就是本章讲的Data Binding和与之相关的数据校验和数据转换。在使用Binding的时候,最

一、简介

WPF的核心理念是变传统的UI驱动数据变成数据驱动UI,支撑这个理念的基础就是本章讲的Data Binding和与之相关的数据校验和数据转换。在使用Binding的时候,最重要的就是设置它的源和路径。
Bingding的源:
有三个属性用来设置源:ElementName(string)、Source(Object) 和 RelativeSource(RelativeSource)。注:这三个只能指定一个,否则异常。
ElementName:源为一个元素(Element),这里用的是此元素中设置的Name属性。
Source:以object作为源。<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
RelativeSource:源相对于绑定目标的位置。
源是元素本身:{Binding RelativeSource={RelativeSource Self}};
源是Tempalte中元素的Parent:{Binding RelativeSource={RelativeSource TemplatedParent}};
源是绑定以collection形式的前一个数据:{Binding RelativeSource={RelativeSource PreviousData}},MSDN上关于PreviousData的说明并不多。
以上三项为RelativeSource中的Static值,使用这些值可以减少内存开销。
源是Ancestor(可能比parent还高):{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=n, AncestorType={x:Type desiredType}}}

Bingding的Path:
Binding中的Path是 PropertyPath对象。
在最简单的情况下,Path 属性值是要用于绑定的源对象的属性名称,如 Path=PropertyName。
通过类似于C#中使用的语法,可以指定属性的子属性。例如,子句 Path=ShoppinGCart.Order 将绑定设置为对象的子属性 Order 或属性 ShoppingCart。
若要绑定到附加属性,请将附加属性用括号括起。例如,若要绑定到附加属性 DockPanel.Dock,则语法为 Path=(DockPanel.Dock)。
在应用了索引器的属性名称之后的方括号内,可以指定属性的索引器。例如,子句 Path=ShoppingCart[0] 将绑定设置为与属性的内部索引处理文本字符串“0”的方式对应的索引。此外,还支持多个索引器。
在 Path 子句中可以同时使用索引器和子属性,例如,Path=ShoppingCart.ShippingInfo[MailingAddress,Street]。
在索引器内部,可以有多个由逗号(,) 分隔的索引器参数。可以使用圆括号指定每个参数的类型。例如,可以使用 Path="[(sys:Int32)42,(sys:Int32)24]",其中 sys 映射到 System 命名空间。
如果源为集合视图,则可以用斜杠(/) 指定当前项。例如,子句 Path=/ 设置到视图中当前项的绑定。如果源为集合,则此语法指定默认集合视图的当前项。
可以结合使用属性名和斜杠来遍历作为集合的属性。例如,Path=/Offices/ManagerName 指定源集合的当前项,该源集合包含同样是集合的 Offices 属性。其当前项是包含 ManagerName 属性的对象。
也可以使用句点(.)路径绑定到当前源。例如,Text=”{Binding}” 等效于 Text=”{Binding Path=.}”。

二、案例

案例一:

Grid代码:

   <Grid>
        <!--行-->
        <Grid.RowDefinitions>
            <RowDefinition Height="200" />
            <RowDefinition Height="200"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--列-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <!--设置在Grid中布局位置-->
        <!--将MainWindow分为3x3的布局,则位于中间(1,1)位置,个人理解相当于坐标。-->
        <StackPanel  Grid.Row="1" Grid.Column="1">
            <TextBlock Width="250" Height="30" Text="颜色:" TextWrapping="Wrap"  Background="Azure" FontSize="20"/>
            <ListBox x:Name="listColor" Width="200" Height="90"  Background="Azure"  FontSize="20">
                <ListBoxItem Content="Blue"/>
                <ListBoxItem Content="Red"/>
                <ListBoxItem Content="Green"/>
                <ListBoxItem Content="Gray"/>
                <ListBoxItem Content="Cyan"/>
                <ListBoxItem Content="GreenYellow"/>
                <ListBoxItem Content="Orange"/>
            </ListBox>
            <TextBlock Width="200" Height="30" TextWrapping="Wrap"  FontSize="20" Margin="3,1,2,1"   Background="Azure" Text="改变背景色:" />
            <!--绑定选择值-->
            <TextBlock Width="200" Height="30" Text="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}"  Background="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}">
            </TextBlock>
            <TextBox Name="txtTwoWay" Text="{Binding ElementName=listColor,Path=SelectedItem.Content,Mode=TwoWay}"  Background="{Binding ElementName=listColor,  Path=SelectedItem.Content,Mode=TwoWay}" >
            </TextBox>
        </StackPanel>
    </Grid>

执行效果:

案例二:

Grid代码:

<Grid>
        <StackPanel>
            <TextBlock Text="{Binding ElementName=slider,Path=Value}"/>
            <Slider x:Name="slider" Maximum="100" Minimum="1"/>
        </StackPanel>
 </Grid> 

执行效果:

三、总结

在上例子中绑定数据源时候用到了Mode属性,通过查阅资料得知有以下区别:
oneTime:一次性绑定,将数据给控件,绑定就结束。
oneWay:数据源改变会影响绑定该数据源的控件。
twoWay:数据源改变会影响绑定该数据源的控件,并且控件中数据改变时也会影响到数据源。

到此这篇关于WPF数据绑定Binding的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: WPF数据绑定Binding的用法

本文链接: https://www.lsjlt.com/news/146752.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • WPF数据绑定Binding的用法
    一、简介 WPF的核心理念是变传统的UI驱动数据变成数据驱动UI,支撑这个理念的基础就是本章讲的Data Binding和与之相关的数据校验和数据转换。在使用Binding的时候,最...
    99+
    2024-04-02
  • WPF绑定Binding用法
    什么是绑定(Binding) 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello";label.Text=&qu...
    99+
    2024-04-02
  • WPF 非元素类绑定Binding之 RelativeSource 属性
    WPF中的RelativeSource属性用于非元素类的绑定,比如在样式、模板或数据模板中使用。它允许您从绑定目标的父级或祖先级元素...
    99+
    2023-09-28
    WPF
  • GridView绑定数据的实现-wpf数据绑定
    在WPF中,可以通过以下步骤实现GridView的数据绑定:1. 创建一个数据模型类,用于表示你要绑定的数据对象。该类应该实现INo...
    99+
    2023-09-22
    GridView
  • WPF实现数据绑定
    简单而言, 数据绑定是一种关系, 这种关系告诉WPF 从一个源目标对象中提取一些信息, 并且使用该信息设置为目标对象的属性。目标属性总是依赖项属性, 并且通常位于WPF元素中。 然而...
    99+
    2024-04-02
  • WPF PasswordBox进行数据绑定方法
    目录问题描述解决办法本文介绍下PasswordBox进行数据绑定的方法,本文参考链接。 本文完整示例程序见GitHub。 问题描述 PasswordBox的Password属性不是...
    99+
    2024-04-02
  • WPF数据驱动修改绑定的方法
    本篇内容介绍了“WPF数据驱动修改绑定的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介在XAML文件中我们创建了一个TextBl...
    99+
    2023-06-30
  • WPF TreeView绑定数据的方法是什么
    WPF TreeView 绑定数据的方法有多种,可以使用以下几种方法: 使用 ItemsSource 属性:可以将一个集合作为 T...
    99+
    2023-10-23
    WPF TreeView
  • WPF数据绑定中的RelativeSource属性
    一、简介 一个在Binding中比较重要的知识点——RelativeSource. 使用RelativeSource对象指向源对象。用这个可以在当前元素的基础...
    99+
    2024-04-02
  • WPF数据驱动修改绑定
    一、简介 在XAML文件中我们创建了一个TextBlock 和一个Slider。2个控件。我们把TextBlock的Text属性(用于显示文本的属性)设置为{Binding Inte...
    99+
    2024-04-02
  • wpf数据绑定的方式有哪些
    WPF数据绑定的方式有四种:1. 单向绑定(OneWay):数据只能从数据源传递到目标元素,不能从目标元素传递回数据源。2. 双向绑...
    99+
    2023-08-09
    wpf
  • wpf datagrid数据绑定卡顿怎么解决
    如果在WPF的DataGrid中进行数据绑定时出现卡顿,可以尝试以下几种方法来解决:1. 使用虚拟化:将DataGrid的Virtu...
    99+
    2023-10-18
    wpf
  • wpf datagrid数据绑定很慢怎么解决
    WPF DataGrid数据绑定慢的问题通常可以通过以下几种方式来解决:1. 使用虚拟化:WPF提供了虚拟化功能,可以在大量数据绑定...
    99+
    2023-10-20
    wpf
  • C# WPF数据绑定模板化操作的方法是什么
    今天小编给大家分享一下C# WPF数据绑定模板化操作的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体...
    99+
    2023-06-26
  • Blazor数据绑定用法
    Blazor当中, 类似实现了WPF的基础绑定功能, 支持在HTML元素当中使用Razor语法进行绑定C#字段、属性或 Razor 表达式值。 绑定语法 在Html标签中,使用Raz...
    99+
    2024-04-02
  • wpf双向绑定的方法是什么
    WPF(Windows Presentation Foundation)中的双向绑定是一种机制,可以在界面控件和数据对象之间实现双向...
    99+
    2023-08-08
    wpf
  • C#对WPF数据绑定的菜单插入Seperator分隔
    WPF前台代码展示 <Window.Resources> <local:Source x:Key="src"/> </Window.Resour...
    99+
    2024-04-02
  • C#怎么对WPF数据绑定的菜单插入分隔
    这篇文章主要介绍了C#怎么对WPF数据绑定的菜单插入分隔的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么对WPF数据绑定的菜单插入分隔文章都会有所收获,下面我们一起来看看吧。WPF代码展示<Wind...
    99+
    2023-07-02
  • C# WPF数据绑定模板化操作的完整步骤
    目录前言:具体实例代码如下:总结前言: WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法: 具体实例代码如下: public cla...
    99+
    2024-04-02
  • wpf怎么绑定对象的属性
    在WPF中,可以使用数据绑定来绑定对象的属性。 首先,确保你的对象实现了INotifyPropertyChanged接口。这个接口定...
    99+
    2023-10-24
    wpf
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作