我创建了一个自定义控件,其中包含一个按钮。该按钮的样式是为了容纳一个有两行的网格,第一行是图像,第二行是 TextBlock。我为自定义控件编写了一个事件处理程序。当鼠标进入对象的路径时,会触发 MouseEnter 事件,我尝试更改 TextBlock 的 FontSize 和 Foreground 颜色,但控件不会更新。相比之下,我尝试修改常规 TextBlock 的(不是自定义控件和控件模板的一部分)属性,并且它们会即时正确更新。
我在这里想念什么?这是事件处理程序的代码:
private void ThemeButton_MouseEnter(object sender, MouseEventArgs e)
{
InitializeProperties();
TextElement.FontSize = 16;
TextElement.Text = "new text";
TextElement.Foreground = Brushes.Red;
TextBlock element = MainWindow.FindChild<TextBlock>(MainWindow.StartWindow, "textField");
element.Text = "new text for regular textblock";
element.Foreground = Brushes.Red;
}
InitializeProperties 是一个初始化 TextElement(typeof TextBlock) 和 ImageElement(typeof Image) 属性的方法。它们不为空。这些属性只是常规的 .NET 属性。