WPF UI 不更新控件模板中的文本块
WPF UI doesn't update textblock in controltemplate
我为下面的 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 似乎没有更新它。我可以知道如何解决这个问题吗?
您的代码复制文本块的值,然后将名为 "Text" 的 属性 分配给副本的值。您永远不会真正更改按钮内的文本。您的文本块称为 textblock1,textblock 是从 textblock1 初始化的,但是一旦完成,它们就不会链接在一起。
自从我使用 WPF 以来已经有一段时间了,但您需要使用类似这样的方法将文本值重新分配给按钮:
textblock1.Text = textblock;
或更简单:
textblock1.Text = "sampletext2";
在任何活动中更改您的代码
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";
}
}
我为下面的 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 似乎没有更新它。我可以知道如何解决这个问题吗?
您的代码复制文本块的值,然后将名为 "Text" 的 属性 分配给副本的值。您永远不会真正更改按钮内的文本。您的文本块称为 textblock1,textblock 是从 textblock1 初始化的,但是一旦完成,它们就不会链接在一起。
自从我使用 WPF 以来已经有一段时间了,但您需要使用类似这样的方法将文本值重新分配给按钮:
textblock1.Text = textblock;
或更简单:
textblock1.Text = "sampletext2";
在任何活动中更改您的代码
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";
}
}