不久前遇到一个问题,在绑定的时候打算将数据模型类全部设置为internal类型,进行模块的封装。不过当设置为internal之后绑定居然不起作用了。代码如下:
数据模型部分:

public abstract class NotifyBind : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string propname){if (this.PropertyChanged != null){PropertyChanged(this, new PropertyChangedEventArgs(propname));}}}public class MainModel:NotifyBind{private string ishowTest = string.Empty;private string pshowTest = string.Empty;internal string IShowTest{get { return this.ishowTest; }set{this.ishowTest = value;this.OnPropertyChanged("IShowTest");}}public string PShowTest{get { return this.pshowTest; }set{this.pshowTest = value;this.OnPropertyChanged("PShowTest");}}}

页面部分:

<Window x:Class="TestInternalBinding.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="436" Width="803"><Grid><TextBox Height="30" HorizontalAlignment="Left" Margin="130,120,0,0" Name="textBox1" VerticalAlignment="Top" Width="186"Text="{Binding PShowTest,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/><TextBox Height="30" HorizontalAlignment="Left" Margin="130,170,0,0" Name="textBox2" VerticalAlignment="Top" Width="186"Text="{Binding IShowTest,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/><Button Content="public绑定" Height="23" HorizontalAlignment="Left" Margin="333,127,0,0" Name="button1" VerticalAlignment="Top" Width="85" Click="button1_Click" /><Button Content="internal绑定" Height="23" HorizontalAlignment="Left" Margin="333,174,0,0" Name="button2" VerticalAlignment="Top" Width="85" Click="button2_Click" /></Grid>
</Window>

后台部分:

 public partial class MainWindow : Window{private MainModel data = new MainModel();public MainWindow(){InitializeComponent();this.DataContext = data;}private void button1_Click(object sender, RoutedEventArgs e){string showstring = string.IsNullOrEmpty(data.PShowTest) ? "空" : data.PShowTest;MessageBox.Show("当前为public绑定,输入内容为:" + showstring);}private void button2_Click(object sender, RoutedEventArgs e){string showstring = string.IsNullOrEmpty(data.IShowTest) ? "空" : data.IShowTest;MessageBox.Show("当前为internal绑定,输入内容为:" + showstring);}}

当输入文字到文本框后,分别触发按钮点击时间后,如下图:
1、字段为public的,

2、字段为internal的,

可以看出字段为internal后,绑定是没有作用的。所以在绑定的时候数据模型类,必须为public类型才可以。

代码下载: http://download.csdn.net/detail/yysyangyangyangshan/5238192

WPF-14:绑定中数据模型必须为public问题相关推荐

  1. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation

    [WPF 基础知识系列] -- 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 前言: 只要是有表单存在,那么就有可能有对数据的校验需 ...

  2. C#中WPF ListView绑定数据的实例详解

    C#中WPF ListView绑定数据的实例详解 发布时间: 2019-03-09 19:29:46 来源: 互联网 作者: 晨曦888 栏目: C#教程 点击: 298 这篇文章主要介绍了C#中WP ...

  3. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...

  4. 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH

    在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不 ...

  5. 重新想象 Windows 8 Store Apps (52) - 绑定: 与 Element Model Indexer Style RelativeSource 绑定, 以及绑定中的数据转换...

    重新想象 Windows 8 Store Apps (52) - 绑定: 与 Element Model Indexer Style RelativeSource 绑定, 以及绑定中的数据转换 原文: ...

  6. WPF Bind 绑定

    WPF Bind 绑定 原文:WPF Bind 绑定 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/ ...

  7. WPF 命令绑定的各种方式

    WPF 命令绑定的各种方式 引言 在WPF开发过程中,不得不学习的就是MVVM模式.但是在MVVM中又绕不开命令(Command)的使用.下面通过几种方式介绍我了解的WPF命令绑定方式. 如何使用 控 ...

  8. WPF Binding(绑定)详解

    Binding概念理解: WPF为了实现了UI与数据逻辑的解耦,将UI从数据逻辑中分离出来形成Xaml文件,而UI与数据逻辑之间的联系则通过Bingding来实现.Bingding就像UI与数据逻辑之 ...

  9. WPF MVVMLight Treeview中的SelectedItem

    如何检索WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它. 您可能会认为它不存在SelectedItem,但显然不存在,它是只读的,因此无法使用. 这就是我想做的: <TreeV ...

  10. WPF TreeView 绑定(demo 转)

    WPF TreeView 绑定 2018年01月23日 13:55:32 余生余我 阅读数:563 前台: <TreeView x:Name="tree" ItemsSour ...

最新文章

  1. 文本超出隐藏 综合整理
  2. zookeeper源码分析之三客户端发送请求流程
  3. Docker镜像加速,设置国内源
  4. RocketMQ快速入门之手动创建topic
  5. Linux 和 Windows 平台不同的 UCS-2 编码
  6. python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)
  7. 什么是无线路由器网络协议?
  8. 4月1日起 理想ONE零售价由33.8万元上调至34.98万元
  9. java 修改源码_再谈给应用程序diy启动画面和java源代码补丁修改
  10. 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
  11. sql基础语句(联表查询)
  12. 资源集成视角解读项目管理-合同类型
  13. 5G牌照今日发放!!!
  14. 企业版360忘记密码卸载
  15. html 关闭当前tab页面,js关闭浏览器的tab页(兼容)
  16. android文件上传413 nginx [error] 9679#0: *318855 client intended to send too large body: 1593409 bytes
  17. Python爬虫-专业数据库书名爬取
  18. windows操作系统死机代码及其含义解剖
  19. 区块链信息安全(区块链信息安全关键技术研究)
  20. jq 手风琴折叠菜单 js滚动效果 collapse.js slideUp()

热门文章

  1. C#Brush的使用(转载)
  2. 支持向量机SVM分析
  3. Vivaldi for Mac(极速浏览器)支持m1
  4. 达芬奇17(DaVinci Resolve Studio 17)兼容big surv17.0b9最新版
  5. 停用zabbix 自动发现的一些规则
  6. 移动磁盘连接电脑后,仅有“只读”权限解决方案
  7. 视频会议受追捧,省钱又节能
  8. 移动端实现内滚动的4种方案
  9. 禁止谷歌浏览器对form元素添加缓存默认值
  10. SQL基础---SQL DELETE 语句