首页 > 解决方案 > C# 自定义控件无法更新,但触发了 OnPropertyChanged

问题描述

//这是我的CustomControl的代码

我不知道为什么属性文本被更改并且 OnPropertyChange("Text") 被成功触发,但是在主窗口中,它有一个自定义控件调用 Mystatusbar,这个自定义控件中的文本无法更新并保持背景黑色(我设置它)

namespace ExternalControl
{

    public partial class MyStatusBar : UserControl, INotifyPropertyChanged
    {
        public MyStatusBar()
        {
            InitializeComponent();
        }

        private string text = "状态栏";

        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// 状态栏显示的Text的入口
        /// </summary>
        public string Text
        {
            get
            {
                return text;
            }
            set
            {
                this.text = value;
                OnPropertyChanged("Text");
            }
        }

        private void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler propertyChangedEvent = PropertyChanged;
            if (propertyChangedEvent != null)
            {
                propertyChangedEvent(this, new 
                   PropertyChangedEventArgs(propertyName));
            }
        }

        private void _StatusBar_MouseEnter(object sender, MouseEventArgs e)
        {
            Text=DateTime.Now.ToLongTimeString();
        }

        private void UserControl_MouseEnter(object sender, MouseEventArgs e)
        {
            Text=DateTime.Now.ToLongTimeString();
        }
    }
}




        //here is my mainwindow code behind
    public partial class MainWindow : Window
    {        
        public MainWindow()
        {
            InitializeComponent();
        }        
    }

标签: c#data-bindingwpf-controls

解决方案


INotifyPropertyChanged不属于您的自定义控件。它属于您的(视图)模型。

对于具有您希望绑定到的属性的自定义控件,请使用自定义 Dependency Property


推荐阅读