WPF-14:绑定中数据模型必须为public问题
不久前遇到一个问题,在绑定的时候打算将数据模型类全部设置为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问题相关推荐
- [WPF 基础知识系列] —— 绑定中的数据校验Vaildation
[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 前言: 只要是有表单存在,那么就有可能有对数据的校验需 ...
- C#中WPF ListView绑定数据的实例详解
C#中WPF ListView绑定数据的实例详解 发布时间: 2019-03-09 19:29:46 来源: 互联网 作者: 晨曦888 栏目: C#教程 点击: 298 这篇文章主要介绍了C#中WP ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...
- 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH
在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不 ...
- 重新想象 Windows 8 Store Apps (52) - 绑定: 与 Element Model Indexer Style RelativeSource 绑定, 以及绑定中的数据转换...
重新想象 Windows 8 Store Apps (52) - 绑定: 与 Element Model Indexer Style RelativeSource 绑定, 以及绑定中的数据转换 原文: ...
- WPF Bind 绑定
WPF Bind 绑定 原文:WPF Bind 绑定 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/ ...
- WPF 命令绑定的各种方式
WPF 命令绑定的各种方式 引言 在WPF开发过程中,不得不学习的就是MVVM模式.但是在MVVM中又绕不开命令(Command)的使用.下面通过几种方式介绍我了解的WPF命令绑定方式. 如何使用 控 ...
- WPF Binding(绑定)详解
Binding概念理解: WPF为了实现了UI与数据逻辑的解耦,将UI从数据逻辑中分离出来形成Xaml文件,而UI与数据逻辑之间的联系则通过Bingding来实现.Bingding就像UI与数据逻辑之 ...
- WPF MVVMLight Treeview中的SelectedItem
如何检索WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它. 您可能会认为它不存在SelectedItem,但显然不存在,它是只读的,因此无法使用. 这就是我想做的: <TreeV ...
- WPF TreeView 绑定(demo 转)
WPF TreeView 绑定 2018年01月23日 13:55:32 余生余我 阅读数:563 前台: <TreeView x:Name="tree" ItemsSour ...
最新文章
- 文本超出隐藏 综合整理
- zookeeper源码分析之三客户端发送请求流程
- Docker镜像加速,设置国内源
- RocketMQ快速入门之手动创建topic
- Linux 和 Windows 平台不同的 UCS-2 编码
- python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)
- 什么是无线路由器网络协议?
- 4月1日起 理想ONE零售价由33.8万元上调至34.98万元
- java 修改源码_再谈给应用程序diy启动画面和java源代码补丁修改
- 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
- sql基础语句(联表查询)
- 资源集成视角解读项目管理-合同类型
- 5G牌照今日发放!!!
- 企业版360忘记密码卸载
- html 关闭当前tab页面,js关闭浏览器的tab页(兼容)
- android文件上传413 nginx [error] 9679#0: *318855 client intended to send too large body: 1593409 bytes
- Python爬虫-专业数据库书名爬取
- windows操作系统死机代码及其含义解剖
- 区块链信息安全(区块链信息安全关键技术研究)
- jq 手风琴折叠菜单 js滚动效果 collapse.js slideUp()