INotifyPropertyChanged接口为什么订阅不成功?

鏡椛氹鈅 2015-09-15 10:48:42
数据绑定:
<TextBlock x:Name="txt" Background="Yellow" Text="{Binding Path = SuccessRate}" TextWrapping="Wrap" Margin="65,76,0,77" />
接口实现:
private string _SuccessRate;
public string SuccessRate
{
get
{
return _SuccessRate;
}
set
{
_SuccessRate=value;
OnPropertyChanged("SuccessRate");
}
}

#region INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
else
{
this.txt.Text = "订阅失败!";
}
}
结果:
麻烦大神给解释下原因...
...全文
201 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2015-09-18
  • 打赏
  • 举报
回复
引用 10 楼 u012804018 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 了解MVVM先。
引用 2 楼 hbu_pig 的回复:
在给变量赋值前需要加一句 this.txt.DataContext = this; INotifyPropertyChanged是通知客户端的,,,没有人绑定它,它就谁也不通知了
非常感谢两位,初次接触WPF很多地方很不适应,看资料也是云里雾里的....MVVM好像是WPF最基本的框架,可是一中午还是没理解... 你们有最简单的MVVM的例子吗?[/quote] http://download.csdn.net/detail/duanzi_peng/8086935看看这个例子先。
51Crack 2015-09-16
  • 打赏
  • 举报
回复
你应该贴完整代码,包括文件名
欢乐的小猪 2015-09-15
  • 打赏
  • 举报
回复
在给变量赋值前需要加一句 this.txt.DataContext = this; INotifyPropertyChanged是通知客户端的,,,没有人绑定它,它就谁也不通知了
exception92 2015-09-15
  • 打赏
  • 举报
回复
了解MVVM先。
鏡椛氹鈅 2015-09-15
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
了解MVVM先。
引用 2 楼 hbu_pig 的回复:
在给变量赋值前需要加一句 this.txt.DataContext = this; INotifyPropertyChanged是通知客户端的,,,没有人绑定它,它就谁也不通知了
非常感谢两位,初次接触WPF很多地方很不适应,看资料也是云里雾里的....MVVM好像是WPF最基本的框架,可是一中午还是没理解... 你们有最简单的MVVM的例子吗?
欢乐的小猪 2015-09-15
  • 打赏
  • 举报
回复
引用 8 楼 duanzi_peng 的回复:
[quote=引用 7 楼 hbu_pig 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 了解MVVM先。
你还是让他把基本的绑定弄明白吧。。。。。 弄明白基础的再看,,他会觉出mvvm的好处。。。[/quote] 好,听pig的,先把WPF中的那几种绑定方式搞明白先。pig 只用了其中一种。[/quote]你是版主,你来说
exception92 2015-09-15
  • 打赏
  • 举报
回复
引用 7 楼 hbu_pig 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 了解MVVM先。
你还是让他把基本的绑定弄明白吧。。。。。 弄明白基础的再看,,他会觉出mvvm的好处。。。[/quote] 好,听pig的,先把WPF中的那几种绑定方式搞明白先。pig 只用了其中一种。
欢乐的小猪 2015-09-15
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
了解MVVM先。
你还是让他把基本的绑定弄明白吧。。。。。 弄明白基础的再看,,他会觉出mvvm的好处。。。
欢乐的小猪 2015-09-15
  • 打赏
  • 举报
回复
新建一个WpfApplication1 这是xaml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" x:Name="window">
    <Grid>
        <TextBlock x:Name="txt" Background="Yellow" Text="{Binding Path = SuccessRate,ElementName=window}" TextWrapping="Wrap" Margin="65,76,0,77" />
    </Grid>
</Window>
这是cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window,INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();
           
            SuccessRate = "SuccessRate_Test";
        }

        private string _SuccessRate;
        public string SuccessRate
        {
            get
            {
                return _SuccessRate;
            }
            set
            {
                _SuccessRate = value;
                OnPropertyChanged("SuccessRate");
            }
        }

      

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
            else
            {
                this.txt.Text = "订阅失败!";
            }
        }
    }
}
exception92 2015-09-15
  • 打赏
  • 举报
回复
引用 4 楼 u012804018 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 了解MVVM先。
这个框架我看了,上面的代码就是根据网上的例子修改的,因为不是很懂才来求教的,望大神不吝赐教...初次接触WPF...[/quote] 那网上这个例子不对。这里连个ViewModel 都没有,连DataContext都没有设置,它怎么可能对。 去msdn上找例子
鏡椛氹鈅 2015-09-15
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
了解MVVM先。
这个框架我看了,上面的代码就是根据网上的例子修改的,因为不是很懂才来求教的,望大神不吝赐教...初次接触WPF...
鏡椛氹鈅 2015-09-15
  • 打赏
  • 举报
回复
引用 2 楼 hbu_pig 的回复:
在给变量赋值前需要加一句 this.txt.DataContext = this; INotifyPropertyChanged是通知客户端的,,,没有人绑定它,它就谁也不通知了
这句话不是绑定的吗? <TextBlock x:Name="txt" Background="Yellow" Text="{Binding Path = SuccessRate}" TextWrapping="Wrap" Margin="65,76,0,77" />我加了你这句this.txt.DataContext = this;还是没用;

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧