WPF 如何动态绑定static成员变量 并实现INOTIFYPROPERTYCHANGED方法

我想请问一下我在类中定义了static类型的全局static变量现在我想将它绑定oneway方式到一个textBox控件上面去,据说要动态绑定需要实现INotifyPro... 我想请问一下 我在类中定义了static类型的全局static变量 现在我想将它绑定oneway方式到一个textBox控件上面去,据说要动态绑定需要实现INotifyPropertyChanged方法, 请问具体该怎么去做呢? 展开
 我来答
河北新华电脑v
2016-02-25 · TA获得超过369个赞
知道小有建树答主
回答量:520
采纳率:40%
帮助的人:337万
展开全部
首先创先一个实体类
public class MyClass : INotifyPropertyChanged
{
private static string _myString = "sdfdsfssdfsdfsdfdsf";

public string MyString
{
get { return _myString; }
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}

//然后把这个实体类绑定到页面的 DataContext

<TextBox Text="{Binding MyString}"/>
追问:
我从后台绑定的,但是它说我没有实现INOtifyPropertyChanged接口

追答:
2中方式
第一种

第二种

追问:
使用第一种方法的时候它说URI指向的是未包含在程序集中的命名空间...

所以我在后台绑定的,具体代码如下:

但是程序爆出如下异常,请问该怎么办?把绑定的方法从oneway改为onetime
就可以运行,请问是什么原因:

追答:
不是这么写的吧
简单的写法

this.DataContext = new MyClass();
MytTextBox.SetBinding(TextBox.TextProperty, new Binding("MyString"){Mode = BindingMode.OneWay});

你的那种写法就不需要绑定DataContext了
直接
Binding bd = new Binding() { Source = new MyClass(), Path = new PropertyPath("MyString"),Mode = BindingMode.OneWay };
BindingOperations.SetBinding(MytTextBox, TextBox.TextProperty, bd);
追问:
你好,按照你的方式试过了,还是抛出XamlParseException错误,然后我将OneWay的调用方法改为onetime就不会出错,应该还是INotiyPropertyChanged接口没有正确实现,请问我该怎么办?
河北新华电脑一
2016-03-17 · TA获得超过154个赞
知道答主
回答量:233
采纳率:100%
帮助的人:78.4万
展开全部
首先创先一个实体类
public class MyClass : INotifyPropertyChanged
{
private static string _myString = "sdfdsfssdfsdfsdfdsf";

public string MyString
{
get { return _myString; }
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}

//然后把这个实体类绑定到页面的 DataContext

<TextBox Text="{Binding MyString}"/>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ImpheadKing
推荐于2016-08-31 · 超过10用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:11.1万
展开全部
首先创先一个实体类
public class MyClass : INotifyPropertyChanged
{
private static string _myString = "sdfdsfssdfsdfsdfdsf";

public string MyString
{
get { return _myString; }
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}

//然后把这个实体类绑定到页面的 DataContext

<TextBox Text="{Binding MyString}"/>
更多追问追答
追问
我从后台绑定的,但是它说我没有实现INOtifyPropertyChanged接口
追答

2中方式

第一种 


第二种

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式