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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值