///这是我的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();
}
}
答案 0 :(得分:0)
INotifyPropertyChanged
不属于您的自定义控件。它属于您的(视图)模型。
对于具有要绑定到的属性的自定义控件,请使用custom Dependency Property。
答案 1 :(得分:0)
Kwinten是正确的。 另一方面,如果您只是想使其工作,请尝试使用以下代码编辑用户控件构造函数:
public MyStatusBar()
{
InitializeComponent();
DataContext = this;
}