c# - 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();
}
}
解决方案
INotifyPropertyChanged
不属于您的自定义控件。它属于您的(视图)模型。
对于具有您希望绑定到的属性的自定义控件,请使用自定义 Dependency Property。