You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP中修改TextBlock值后界面不更新问题求助

问题原因与解决方法

核心问题

你在MyDialog.xaml里给TextBlock的Text属性绑定用了RelativeSource={RelativeSource Mode=TemplatedParent},但这个模式只适合在控件模板(ControlTemplate)内部绑定到模板所属的控件实例。你的MyDialog是普通UserControl,并没有使用模板结构,所以这个绑定找不到ForTest属性的正确来源,导致后台值更新后界面无法同步刷新。

修复方案

修改TextBlock的绑定方式,两种方案任选其一:

方案1:使用RelativeSource Mode=Self绑定到UserControl自身

直接将绑定的相对源指向UserControl实例本身:

<TextBlock x:Name="forTestDisplay" FontSize="16" TextWrapping="Wrap"
           Text="{Binding ForTest, RelativeSource={RelativeSource Mode=Self}}" />

方案2:通过ElementName绑定到UserControl

先给UserControl添加x:Name属性:

<UserControl
    ...
    d:DesignHeight="100"
    d:DesignWidth="200"
    x:Name="MyDialogControl"
>

然后修改TextBlock的绑定:

<TextBlock x:Name="forTestDisplay" FontSize="16" TextWrapping="Wrap"
           Text="{Binding ForTest, ElementName=MyDialogControl}" />

验证效果

修改完成后重新运行程序,DispatcherTimer每秒更新myDialog.ForTest的值时,TextBlock会实时显示当前的时间,界面刷新恢复正常。

内容的提问来源于stack exchange,提问作者ricky rocky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:22:08