WPF UI 不更新控件模板中的文本块



我在下面为WPF制作了一个示例XAML和C#:

XAML :

<Button Name="btn">
<Button.Template>
<ControlTemplate>
<Grid>
<TextBlock Name="textblock1" Text="sampletext1" />
<Grid>
<ControlTemplate>
</Button.Template>
</Button>

C# :

Grid grid = btn.Template.LoadContent() as Grid;
var textblock = grid.FindName("textblock1") as TextBlock;
textblock.Text = "sampletext2";

我能够在代码隐藏中检索和更改文本块文本,但似乎 UI 没有更新它。我可以知道如何解决这个问题吗?

在任何事件中更改代码

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
TextBlock textBlockInTemplate = (TextBlock)btn.Template.FindName("textblock1", btn);
textBlockInTemplate.Text = "SampleText2";
}
} 

您的代码会复制文本块的值,然后将名为"Text"的属性分配给副本的值。您从未实际更改按钮内的文本。您的文本块称为textblock1,textblock是从textblock1初始化的,但是一旦完成,它们就不会链接在一起。

自从我使用 WPF 以来已经有一段时间了,但您需要使用如下所示的内容将文本值重新分配给按钮:

textblock1.Text = textblock;

甚至更简单:

textblock1.Text = "sampletext2";

相关内容

  • 没有找到相关文章

最新更新