我创建了一个自定义控件,其中包含一个按钮。该按钮具有样式,以便保持具有两行的网格,第一个中的图像和第二个中的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)属性的methid。它们不是空的。这些属性只是常规的.NET属性。
答案 0 :(得分:0)
请记住,在搜索元素时,总是在渲染完成后开始搜索(即,当用户操作触发事件或类似事件时开始搜索),以便元素进入Visual Tree !!