winform绑定到嵌套对象上的属性(代码片段)

aning2015 aning2015     2023-01-15     648

关键词:

WinFrom 绑定到嵌套对象上的属性

关键字: Windows Forms, DataBindings, Nested Class, 嵌套类

在 WinForm 中很早就已经支持数据绑定, 使用数据绑定可以大大减少更新界面和数据的代码.

一般情况下, 使用自定义的简单对象时数据绑定可以很好的工作, 当我们的对象越来越复杂, 一个对象中使用另一个对象作为属性时, 简单的数据绑定已经无法满足需求.

例如有下面两个对象:


/// <summary>
/// 外部实体
/// </summary>
public class Outer : INotifyPropertyChanged

    #region - Private -
    private string _name;
    private Inner _inner;
    #endregion

    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    
        get  return this._name; 
        set
         
            if(value != this._name)
            
                this._name = value;
                RaisePropertyChanged();
            
        
    

    public Inner Inner
    
        get  return this._inner; 
        set
        
            if(value != this._inner)
            
                this._inner = value;
                RaisePropertyChanged();
            
        
    

    private void RaisePropertyChanged([CallerMemberName]string propertyName = null)
    
        this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    


/// <summary>
/// 内部实体
/// </summary>
public class Inner : INotifyPropertyChanged

    #region - Private -
    private string _name;
    #endregion

    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    
        get  return this._name; 
        set
         
            if(value != this._name)
            
                this._name = value;
                RaisePropertyChanged();
            
        
    

    private void RaisePropertyChanged([CallerMemberName]string propertyName = null)
    
        this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    

数据绑定使用如下:


//初始化对象
var outer = new Outer();

//初始化绑定对象
var outerBindingSource = new BindingSource()  DataSource = outer ;
var innerBindingSource = new BindingSource(outer, nameof(outer.Inner));

//绑定到控件
this.textBoxName.DataBindings.Add("Text", outerBindingSource, nameof(outer.Name));
this.textBoxInnerName.DataBindings.Add("Text", innerBindingSource, nameof(outer.Inner.Name));

winform双向数据绑定(代码片段)

目的:控件的属性值与对象的属性值双向绑定使窗口控件的属性值与对象的属性值保持一致。对窗口控件属性值更改后立即更新对象的属性值,对对象的属性值更改后立即更新窗口控件的属性值。定义控件属性要绑定对象的类:... 查看详情

将对象列表数据绑定到 WinForms DataGridView,但不显示某些公共属性

】将对象列表数据绑定到WinFormsDataGridView,但不显示某些公共属性【英文标题】:DatabindListOfObjectsToAWinFormsDataGridView,ButNotShowCertainPublicProperties【发布时间】:2011-01-2701:16:36【问题描述】:我什至不确定我这样做是否正确。但基本... 查看详情

wpf学习第三十章元素绑定——绑定到非元素对象(代码片段)

原文:【WPF学习】第三十章元素绑定——绑定到非元素对象  前面章节一直都在讨论如何添加链接两个各元素的绑定。但在数据驱动的应用程序中,更常见的情况是创建从不可见对象中提取数据的绑定表达式。唯一的要求是希... 查看详情

如何绑定到不是当前绑定上下文的viewmodel上的属性(代码片段)

...应该的那样工作,但是现在我需要为特定的数据片段设置绑定上下文,但我仍然需要IsVisible属性才能工作。IsEditButtonShown是我的视图模型上的属性。我试过了:IsVisible="BindingIsEditButtonShown,Source=x:ReferenceCurrentPagename什么也没做,而... 查看详情

wpf学习第二十九章元素绑定——将元素绑定到一起(代码片段)

原文:【WPF学习】第二十九章元素绑定——将元素绑定到一起  数据banding的最简单情形是,源对象时WPF元素而且源属性是依赖性属性。前面章节解释过,依赖项属性具有内置的更改通知支持。因此,当在源对象中改变依赖项属... 查看详情

wpf学习第三十章元素绑定——绑定到非元素对象(代码片段)

  前面章节一直都在讨论如何添加链接两个各元素的绑定。但在数据驱动的应用程序中,更常见的情况是创建从不可见对象中提取数据的绑定表达式。唯一的要求是希望显示的信息必须存储在公有属性中。WPF数据绑定数据结构... 查看详情

this关键字详解(代码片段)

关于this的绑定默认绑定this默认绑定到windows在全局环境中,this默认绑定到windows函数独立调用时,this默认绑定到windows被嵌套函数独立调用时,this默认绑定到windowsIIFE立即执行函数,实际上是函数申明之后立即调用闭包函数,是独... 查看详情

属性查找;绑定到对象的方法的特殊之处;对象之间的交互(代码片段)

...属性1.类的数据属性是所有对象共享的2.类的函数属性是绑定给对象用的#类的数据属性是所有对象共享的,id都一样print(id(OldboyStudent.school))print(id(s1.school))print(id(s2.school))print(id(s3.school))‘‘‘4377347328437734732843773473284377347328‘‘‘#... 查看详情

property属性(代码片段)

...roperty类有3个方法getter、setter、deleter,分别把对应的操作绑定到指定的函数实现。因此:1)对property类对象的读操作就是执行绑定到getter的函数2)对对象赋值操作就是执行绑定到setter的函数3)对删除对像操作则执行绑定到deleter的函... 查看详情

Winforms中控制的绑定属性

】Winforms中控制的绑定属性【英文标题】:BindingpropertytocontrolinWinforms【发布时间】:2011-08-1812:05:46【问题描述】:将属性绑定到控件的最佳方法是什么,以便在更改属性值时,控件的绑定属性也会随之更改。如果我有一个属性Fir... 查看详情

wpf将单个文本框绑定到集合对象或数组中的元素(代码片段)

我需要将textblock.text属性绑定到可观察集合或数组元素中的单个元素,并使用INotifyPropertyChanged或INotifyCollectionChanged进行文本更新,以最佳者为准。大多数示例描述了将列表框或其他列表视图绑定到整个集合的方法,但我的应用程... 查看详情

WPF:如何绑定到嵌套属性?

】WPF:如何绑定到嵌套属性?【英文标题】:WPF:Howtobindtoanestedproperty?【发布时间】:2010-11-0123:37:00【问题描述】:我可以绑定到一个属性,但不能绑定到另一个属性中的一个属性。为什么不?例如<WindowDataContext="BindingRelativeSou... 查看详情

Ember 计算属性在绑定到深度嵌套的属性时不会触发

】Ember计算属性在绑定到深度嵌套的属性时不会触发【英文标题】:Embercomputedpropertydoesn\'tfirewhenboundtodeeplynestedproperty【发布时间】:2014-07-2200:40:57【问题描述】:这个JSBin隔离了我在代码中遇到的问题。我有一个嵌入式模型的层... 查看详情

C# winforms:将可空类型绑定到其他属性(不是文本)时出错

】C#winforms:将可空类型绑定到其他属性(不是文本)时出错【英文标题】:C#winforms:Errorwhenbindingnullabletypetootherproperty(notText)【发布时间】:2013-11-2307:06:08【问题描述】:我制作了一个自定义文本框,它将(可为空的)十进制值... 查看详情

springboot1.x和2.x将配置属性绑定到对象上(代码片段)

...涉及到将application.yml或者application.properties中配置的属性绑定到某个类对应的属性上使用@Value或@ConfigurationProperties这种方式就不多说了,使用比较简单,但是局限性也比较大,比如只能在容器启动过程中的特定阶... 查看详情

springboot1.x和2.x将配置属性绑定到对象上(代码片段)

...涉及到将application.yml或者application.properties中配置的属性绑定到某个类对应的属性上使用@Value或@ConfigurationProperties这种方式就不多说了,使用比较简单,但是局限性也比较大,比如只能在容器启动过程中的特定阶... 查看详情

父属性更改时嵌套属性的 WPF 绑定更新通知

】父属性更改时嵌套属性的WPF绑定更新通知【英文标题】:WPFbindingupdatenotificationfornestedpropertywhenparentpropertychanges【发布时间】:2013-08-1605:22:23【问题描述】:我有一个具有复杂属性类型的ViewModel,并希望将我的视图绑定到该对... 查看详情

GridView 与嵌套类的属性绑定

】GridView与嵌套类的属性绑定【英文标题】:GridViewboundwithPropertiesofnestedclass【发布时间】:2010-11-1022:46:38【问题描述】:我有一个类似于下面列出的对象映射。当我尝试在GridView中绑定NestedClass的属性时,出现错误:“在所选数... 查看详情