精华内容
下载资源
问答
  • WPF双向数据绑定

    2020-03-15 11:19:32
    参考:https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/binding-declarations-overview 绑定的四个要素: 绑定目标对象。 目标属性。 绑定源。 要使用的绑定源中值的路径。 msdn上给了很多绑定的...

    WinForm双向数据绑定:https://blog.csdn.net/weixin_42274148/article/details/104889310

    参考:https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/binding-declarations-overview

    绑定的四个要素:

    • 绑定目标对象。
    • 目标属性。
    • 绑定源。
    • 要使用的绑定源中值的路径。

    msdn上给了很多绑定的示例,下边仅给出一种绑定的代码实现:

    1、工程结构;

     2、xaml文件;

    <Window x:Class="testBinding.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:testBinding"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800"
            Loaded="Window_Loaded">
        <Grid>
            <Button x:Name="button" Content="Add" HorizontalAlignment="Left" Margin="340,109,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
            <TextBox x:Name="textBox" Text="{Binding Sum}" HorizontalAlignment="Left" Height="23" Margin="149,109,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
        </Grid>
    </Window>
    

    3、 Data.cs;

    using System;
    using System.Collections.Generic;
    using System.ComponentModel; //添加命名空间
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace testBinding
    {
        class Data: INotifyPropertyChanged //.net定义的接口
        {
            private int sum;
            
            public int Sum
            {
                get 
                {
                    return this.sum;
                }
                set
                {
                    this.sum = value;
                    if (PropertyChanged != null) 
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Sum")); //触发事件
                    }
                }
            }
    
            public event PropertyChangedEventHandler PropertyChanged; //实现接口
        }
    }
    

    4、后台代码;

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace testBinding
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            private Data myData = new Data(); 
            //项目中可以把需要交互的数据放在一个单独的类中,并将这个类与前端控件绑定,
            //通常,需要在该类中实现INotifyPropertyChanged接口,才可以实现双向的绑定
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                myData.Sum = 0;
                textBox.DataContext = myData; //绑定数据上下文
            }
    
            private void button_Click(object sender, RoutedEventArgs e)  //测试代码
            {
                myData.Sum++;
            }
        }
    }
    

    5、结尾

    绑定的目的是实现前后端代码的分离,如果不使用绑定,还可以通过直接给控件赋值,或者通过控件读取值来实现。这样会导致前后端代码高度耦合,修改极度繁琐;而通过以上方式,可以使前后端代码的耦合被限定在Window_Loaded这个函数中,便于代码的修改和移植;

     

     

    展开全文
  • WPF双向数据绑定总结

    2018-11-11 16:43:00
    参考官方:https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/data-binding-wpf ... 1、指定绑定WPF双向数据同步:目标属性(UI)和源属性(CS)数据同步。 实现双向数据同步数据源需要实现...

    参考官方:https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/data-binding-wpf

    实例程序:https://files.cnblogs.com/files/sntetwt/WPFBinding.zip

    1、指定绑定源

    WPF双向数据同步:目标属性(UI)和源属性(CS)数据同步。

    实现双向数据同步数据源需要实现依赖属性INotifyPropertyChanged接口,因为依赖属性有垂直的内嵌变更通知机制。

    INotifyPropertyChanged是用于实现界面通知。
    DependencyObject是实现依赖对象的依赖属性。

    名空间:

    using System.ComponentModel;
    

    实现依赖属性INotifyPropertyChanged接口

    using System;
    using System.ComponentModel;
    
    namespace WPFBinding
    {
        /// <summary>
        /// 实现INotifyPropertyChanged接口
        /// </summary>
        public class Users : INotifyPropertyChanged
        {
            /// <summary>  
            /// 姓名  
            /// </summary>  
            private string _Name;
            public string Name
            {
                get
                {
                    return _Name;
                }
                set
                {
                    _Name = value;
                    OnPropertyChanged("Name");
                }
            }
            /// <summary>  
            /// Email  
            /// </summary>  
            private string _Email;
            public string Email
            {
                get
                {
                    return _Email;
                }
                set
                {
                    _Email = value;
                    OnPropertyChanged("Email");
                }
            }
            protected internal virtual void OnPropertyChanged(string propertyName)
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
            }
            public event PropertyChangedEventHandler PropertyChanged;
        }
    }
    

    2、MVVM架构,ViewModel初始化

    namespace WPFBinding
    {
        public class ViewModel
        {
            public Users user { get; set; }
            public ViewModel()
            {
                this.user = new Users();
            }
        }
    }
    

    3.1、交互逻辑,实例化数据(方式一)

    using System;
    using System.Windows;
    
    namespace WPFBinding
    {
        /// <summary>
        /// MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public ViewModel viewModel;
            public MainWindow()
            {
                InitializeComponent();
                this.viewModel = new ViewModel();
                this.Loaded += (s, e) =>
                {
                    this.DataContext = viewModel;
                    this.viewModel.user = new Users()
                    {
                        Name = "杨秀徐",
                        Email = "471812366@qq.com"
                    };
                };
            }
        }
    }
    

    3.2、XAML绑定数据(方式一)

    <TextBox Name="txtName" Text="{Binding user.Name}"></TextBox>
    <TextBox Name="txtEmail" Text="{Binding user.Email}"></TextBox>
    

      

      

    4.1、交互逻辑,实例化数据(方式二)

    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    
    namespace WPFBinding
    {
        /// <summary>
        /// GetBinding.xaml
        /// </summary>
        public partial class GetBinding : Window
        {
            public ViewModel viewModel;
            public GetBinding()
            {
                InitializeComponent();
                this.viewModel = new ViewModel();
                this.Loaded += (s, e) =>
                {
                    this.DataContext = viewModel;
                    this.viewModel.user = new Users()
                    {
                        Name = "杨秀徐",
                        Email = "471812366@qq.com"
                    };
                    //绑定依赖属性Name
                    txtName.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = viewModel.user });
                    //绑定元素属性Text
                    lblName.SetBinding(ContentProperty, new Binding("Text") { Source = txtName });
                    //绑定依赖属性Email
                    txtEmail.SetBinding(TextBox.TextProperty, new Binding("Email") { Source = viewModel.user });
                    //绑定元素属性Text
                    lblEmail.SetBinding(ContentProperty, new Binding("Text") { Source = txtEmail });
                };
            }
        }
    }

    4.2、XAML元素(方式二)  

    <Label Name="lblName"></Label>
    <TextBox Name="txtName"></TextBox>
    <Label Name="lblEmail"></Label>
    <TextBox Name="txtEmail"></TextBox>
    

     5.1、Binding对象的属性说明

    属性名                 描述        
    1、Converter:转换器,将绑定的内容转换成自己需要的内容。自定义转换类 必须继承于:IValueConverter接口
    2、ElementName:绑定的源对象,本人理解 专程用于UI控件之间属性的绑定
    3、FallbackValue :绑定无法返回有效值时的默认显示值
    4、Mode:绑定方式,枚举类型 Default OneWay TwoWay OneTime OneWayToSource
    5、Path:属性 路径,用来指定要绑定数据源的路径,其性质是一个属性,该属性该当是依靠属性,也即便能够告终积极更新机制的【单个类实现INotifyPropertyChanged、集合要 实现INotifyCollectionChanged接口】
    6、RelativeSource:常用于自身绑定或者数据模板中来指定绑定的源对象及控件模块中的绑定。
    7、Source:源对象,控件或自定义对象等。
    8、StringFormat:格式化表达式
    9、UpdateSourceTrigger:在双向绑定时TwoWay 或 OneWayToSource 时。用来确定属性更改的时机。UpdateSourceTrigger枚举类型:Default,PropertyChanged,LostFocus,Explicit。
    10、ValidationRules:验证规则.可以被设置为一个或多个派生自ValidationRule的对象,每个规则都会检查特定的条件并更具结果来标记数据的有效性

    5.2、Mode指定绑定的方向

    数据绑定模式共有四种:OneTime、OneWay、OneWayToSource和TwoWay,默认是TwoWay。

    TwoWay 当发生更改时的目标属性或源属性更新目标属性。
    OneWay 仅当源属性更改时,请更新目标属性。
    OneTime 仅当应用程序启动时或时,请更新目标属性DataContext发生了更改。
    OneWayToSource 目标属性更改时,请更新源属性。
    Default 默认值将导致Mode要使用的目标属性的值。

    5.3、UpdateSourceTrigger    四种用来确定属性更改的时机,对于 Model=TwoWay 及 OneWayToSource是源数据改变时机。

    6、UI属性绑定数据对象。

    6.1 、UI属性直接绑定实例对象 。实例:Text="{Binding Path=EntryDate, StringFormat=yyyy-MM-dd}"

    6.2 、UI属性直接绑定静态对象。实例:DataContext="{x:Static local:GlobalData.user}"

    6.3 、UI属性绑定资源中的对象。DataContext="{StaticResource ResourceKey=userKey}"

    7、清除绑定

    BindingOperations.ClearBinding(txtBlock, TextBlock.TextProperty);
    

    8、集合双向绑定
    WPF 提供 ObservableCollection<T> 类,它是实现 INotifyCollectionChanged 接口的数据集合的内置实现。

    public class Users : ObservableCollection<Users>
    {
        public Users() : base()
        {
                
        }
    }
    

      

      

     

    展开全文
  • 今天上午终于把自己的双向数据绑定数据库给弄出来了.原来是我有两句code位置写反了,结果导致怎么也无法更改数据库数据,今天费了好大的事才找到错误.原来错误很有可能发生在你最不注意的地方,以后出现错误一定要自己...

    12.23

        今天上午终于把自己的双向数据绑定数据库给弄出来了.原来是我有两句code位置写反了,结果导致怎么也无法更改数据库数据,今天费了好大的事才找到错误.原来错误很有可能发生在你最不注意的地方,以后出现错误一定要自己好好找找,好好想想哪里出错了.

        上午还做的一点事就是找到了自己用户控件不能访问内层控件的错误,原来我在xaml中加上Name就可以了.下午把我用户控件从新写了遍,改用属性绑定.还是出现了一个小错弄了一下午到最后才发现原来在一个不起眼的地方我把用户控件给new了,导致怎么也得不到应有的数据.

        明天要重新写我的分页程序,已经写了两个了但是都不太好,明天再写个另外样式的.但愿这个是最后一个了,不要整天写同样的东西.另外要把我的用户验证控件给继续完善,实现不同数据类型的绑定跟最后的封装.

       今天是我的阳历生日,自己找了家面馆吃了碗面算是给自己过生日了吧,等到元旦在好好补上。

    转载于:https://www.cnblogs.com/luckapple2/archive/2008/12/23/1360893.html

    展开全文
  • 最近研究WPF,遇到并解决了一些难题(至少是初学者的入门...2)控件与数据如何双向绑定? 3)控件如何绑定类成员变量? 4)控件如何绑定类对象的成员变量? 5)每次加载页面时,都会重新初始化,如何保持数据不变?
  • WPF数据双向绑定

    2019-09-26 08:10:18
    设置双向绑定,首先控件要绑定的对象要先继承一个接口: INotifyPropertyChanged 然后对应被绑定的属性增加代码如下: 意思就是当Age这个属性变化时,要通知监听它变化的人。 即:PropertyChanged(this, new ...

    设置双向绑定,首先控件要绑定的对象要先继承一个接口: INotifyPropertyChanged

     

    然后对应被绑定的属性增加代码如下:

    意思就是当Age这个属性变化时,要通知监听它变化的人。

    即:PropertyChanged(this, new PropertyChangedEventArgs("Age")) ,PropertyChangedEventArgs里面写属性名

     

     添加控件btnAddAge点击事件:

            private void btnAddAge_Click(object sender, RoutedEventArgs e)
            {
                p1.Age++;
            }

    点击界面时,textbox的值被刷新为25

     

    这就是WPF的双向绑定,简化了我们编程。

    下一节:DataGrid的数据绑定

    转载于:https://www.cnblogs.com/kassSSB/p/3280499.html

    展开全文
  • WPF DataGrid双向绑定

    2018-11-23 11:33:53
    WPF DataGrid表格 mvvm双向简单绑定,适合刚接触小白
  • 如何在Windows Presentation Foundation中使用XmlDataProvider执行双向数据绑定
  • 昨天本人写了一篇文章《WPF数据绑定——MVVM模式下控件与类成员及类对象成员双向绑定》,地址为:http://blog.csdn.net/mandylover/article/details/69944513,经进一步调试,发现了一个bug,即改变类对象成员的值...
  • WPF数据绑定总结

    千次阅读 2016-07-26 14:22:13
    WPF数据绑定是个好东西,使原本复杂的控件赋值和动态改变简单了一些。但是入门有一点困难,所以转载此篇文章。  最近几天高强度开发,暴露出不少问题,WPF还达不到信手拈来的地步,好些东西还要去看看以前的...
  • WPF数据双向绑定问题

    2014-04-01 11:15:49
    //Part1 begin public class UserResource : INotifyPropertyChanged { ...刚开始学习WPF,初学数据绑定时遇到了一个问题,我在点击刷新按钮以后,修改了数据源的属性值,为什么界面上没有刷新绑定
  • WPF表格数据绑定

    2020-09-18 11:26:31
    WPF表格数据绑定 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio/ 表格数据绑定 作者:戴伟雄 撰写时间:2020年9月8日 ~~~~~~~~~~~~~~~~...
  • WPF数据绑定

    2021-01-24 14:49:29
    WPF 中的数据绑定,必须要有绑定目标和要绑定的数据源。绑定目标可以是继承自 DependencyProperty的任何可访问的属性或控件,例如 TextBox 控件的 Text 属性。数据源可以是其他控件的属性,可以是对象实例、XAML ...
  • WPF数据绑定

    2021-05-12 14:28:16
    WPF数据绑定中,目标可以是WPF元素的任意依赖属性,CLR对象的每个属性都可以绑定源。因为WPF元素作为.NET类实现,所以每个WPF元素也可以用作绑定源。 Binding对象支持源与目标之间的几种绑定模式。绑定可以是单向...
  • 定义绑定类型时,实现/引用INotifyPropertyChanged接口 public class StudentData:INotifyPropertyChanged { private int id; private string name; public int Id { get { return id; } se...
  • WPF GridControl 数据绑定

    千次阅读 2017-04-20 15:21:05
    当时遇到了这个问题,因为Column "功率"已经绑定了一个字段 “Power”,想要根据CellColor改变颜色,在cell里面无法获取到“CellColor”的数据,这个问题花了一天多时间 才找到答案:Foreground="{Binding
  • 2)控件与数据如何双向绑定? 3)控件如何绑定类成员变量? 4)控件如何绑定类对象的成员变量? 5)每次加载页面时,都会重新初始化,如何保持数据不变? 理论上的知识,就不一一详解了。这里写个小程序,解决上述...
  • , Mode=TwoWay}" Width="200" FontSize="15" VerticalContentAlignment="Center" ...这样就实现了双向数据绑定,任何一方改变都会有更新,在通过数据库数据对接,就基本上实现了数据的双向通信。
  • WPF下拉框数据绑定

    千次阅读 2019-04-28 16:02:53
    WPF下拉框有两个值一个是SelectedValuePath id值一个是DisplayMemberPath显示给用户看的name值 先看数据库代码数据库 数据库代码很少只查询了两列一列是staff_id用来当作下拉框的id值一列是staff_name用来当作...
  • wpf数据绑定

    2013-05-14 23:25:00
    一、WPF数据绑定的概要 数据绑定:是应用程序 UI 与业务逻辑之间建立连接的过程。 如果绑定正确设置并且数据提供正确通知,则当数据的值发生更改时,绑定到数据的视觉元素会自动反映更改。 数据绑定可能还意味着...
  • wpf prism 数据绑定

    2021-03-02 11:27:57
    1 新建wpf应用程序 2 添加prism.unity(v8.0)的引用 3 新建Views文件夹讲MainWindow拖到该文件夹中,修改MainWindow.xaml和MainWindow.xaml.cs 注意要修改相关命名空间(3处) <Window x:Class=...
  • 实现了数据双向绑定,更改DataGrid的数据会更新后台数据,更改后台数据会在DataGrid上实时显示。
  • WPF 数据绑定 命令绑定 事件绑定 View和ViewModel的通信
  • C# Wpf双向绑定实例

    2017-03-27 17:59:00
    Wpf双向绑定处理需要两处 实例1: 1.前台Xaml中属性Binding 时Model指定 TwoWay <Grid> <Ellipse x:Name="ellipse" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="{Binding P...
  • WPF双向绑定通知机制之ObservableCollection使用 ObservableCollection<T>类 表示一个动态数据集合,在添加项、...例如,数据绑定中的一个常见方案是使用ItemsControl(如ListBox、ListView或TreeView)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,929
精华内容 1,171
关键字:

wpf双向数据绑定