无法在WPF自定义控件中更新控件

时间:2012-10-24 10:23:56

标签: c# .net wpf

我创建了一个自定义控件,其中包含一个按钮。该按钮具有样式,以便保持具有两行的网格,第一个中的图像和第二个中的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属性。

1 个答案:

答案 0 :(得分:0)

哇...我的问题实际上是属性(TextElement和ImageElemenet)指向模板中的元素(自定义控件)而不是实际在窗口中呈现的元素...

请记住,在搜索元素时,总是在渲染完成后开始搜索(即,当用户操作触发事件或类似事件时开始搜索),以便元素进入Visual Tree !!