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

WPF 点击按钮动态添加UserControl到ItemsControl时绑定失效求助

问题根因

你的StageControl用户控件内部显式声明了DataContext实例,直接覆盖了ItemsControl通过DataTemplate自动传递的、你添加到集合中的目标ViewModel实例,控件内部的所有绑定实际指向的是这个内部创建的空ViewModel,因此取不到你外部赋值的属性值。

解决步骤

  • 第一步:删除StageControl的XAML代码中下面这段硬编码DataContext的配置:
<UserControl.DataContext>
    <viewModels:StageControlViewModel/>
</UserControl.DataContext>

删除后控件会自动继承DataTemplate上下文中的ViewModel实例,和你添加到Stages集合里的实例对应,绑定即可正常生效。

  • (可选)如果你需要在XAML设计器中预览控件的绑定效果,可以使用仅设计时生效的上下文配置,不会影响运行时逻辑:
<UserControl 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance viewModels:StageControlViewModel, IsDesignTimeCreatable=True}">
<!-- 控件其余内容 -->
</UserControl>

额外校验点

修改后如果仍未生效,可以检查StageControl内部的属性绑定是否写了额外的Source、ElementName等配置,避免显式修改了绑定源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:03