【问题标题】:Cannont Update control in WPF custom control无法更新 WPF 自定义控件中的控件
【发布时间】:2012-10-24 10:23:56
【问题描述】:

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

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多