WPF UI不会更新controltemplate中的文本块

时间:2018-06-13 08:23:25

标签: c# wpf xaml controltemplate textblock

我在下面为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没有更新它。我可以知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您的代码会复制文本块的值,然后将名为“Text”的属性分配给副本的值。你永远不会真正改变按钮内的文字。您的文本块名为textblock1,textblock是从textblock1初始化的,但一旦完成,它们就不会链接在一起。

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

textblock1.Text = textblock;

甚至更简单:

textblock1.Text = "sampletext2";

答案 1 :(得分:0)

更改任何活动中的代码

 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";
        }

    }