0

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

4

1 回答 1

0

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

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

于 2012-10-24T10:58:49.360 回答