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

WPF复制带绑定的TextBox至收藏TabItem,绑定失效求助

解决复制绑定到新TextBox后内容为空的问题

嘿,我瞅了下你的代码,问题核心出在绑定源的错误设置上!你原来的TextBox绑定的是Article.Name,但它的数据源(DataContext)大概率不是当前页面(this)——可能是某个视图模型实例,或者是继承自父元素的DataContext。而你手动给新绑定指定binding.Source = this,如果你的页面类里没有Article属性,绑定自然找不到值,新TextBox就会一直是空的。

正确的修复思路

我们需要复用原绑定的数据源,而不是强行指定Source为页面本身。下面是修正后的代码:

private void FavButton_Click(object sender, MouseButtonEventArgs e)
{
    // [... 保留你创建textbox和label的代码]

    string BindingName = "TB_DP_ArticleName"; // 替换成你实际获取的原TextBox名称
    var originalTB = this.FindName(BindingName) as TextBox;
    if (originalTB == null) return;

    // 获取原TextBox的绑定对象
    var originalBinding = BindingOperations.GetBinding(originalTB, TextBox.TextProperty);
    if (originalBinding == null) return;

    // 复制原绑定的所有关键属性,重点复用数据源
    var newBinding = new Binding
    {
        Path = originalBinding.Path,
        Mode = originalBinding.Mode,
        UpdateSourceTrigger = originalBinding.UpdateSourceTrigger,
        TargetNullValue = originalBinding.TargetNullValue,
        // 优先用原绑定的Source,没有的话就用原TextBox的DataContext(继承来的数据源)
        Source = originalBinding.Source ?? originalTB.DataContext
    };

    // 给新创建的TextBox设置绑定
    BindingOperations.SetBinding(tb, TextBox.TextProperty, newBinding);

    // [... 保留你把TextBox添加到Grid的代码]
}

为什么之前的克隆方法无效?

你尝试的绑定克隆方法可能没处理好数据源继承的情况:如果原绑定没有显式设置Source(依赖父元素的DataContext),克隆后的绑定也不会自动继承这个数据源,导致新TextBox找不到Article.Name的路径。上面的代码会优先用原绑定的Source,没有的话就直接取原TextBox的DataContext,完美解决这个问题。

额外简化方案(如果DataContext是继承的)

如果你的整个页面/父容器的DataContext绑定到了一个包含Article属性的ViewModel,那么新TextBox添加到VisualTree后会自动继承这个DataContext,这时候绑定可以更简单:

var newBinding = new Binding(originalBinding.Path.Path)
{
    Mode = originalBinding.Mode,
    UpdateSourceTrigger = originalBinding.UpdateSourceTrigger,
    TargetNullValue = originalBinding.TargetNullValue
};
BindingOperations.SetBinding(tb, TextBox.TextProperty, newBinding);

这样甚至不需要手动设置Source,因为新TextBox会自动从父元素获取DataContext,和原TextBox的数据源保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:09