在WPF中向Canvas添加新TextBlock时出错

时间:2017-03-21 10:25:44

标签: c# wpf xaml canvas

我想在WPF中向我的画布添加文本。代码运行,直到我想将TextBlock作为子项添加到画布,给我这个:

"指定的元素已经是另一个元素的逻辑子元素。首先断开它。"

以下是相关代码:

private void txtbItemName_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextBlock txtItemName = new TextBlock();
            txtItemName.Text = txtbItemName.Text;
            txtItemName.Margin = new Thickness(10, 10, 0, 0);
            cnvImage.Children.Remove(txtItemName);
            cnvImage.Children.Add(txtbItemName); //The error screen showed up when running this line
        }

3 个答案:

答案 0 :(得分:3)

您有错误。您正尝试删除新项目并添加现有项目。

以下是适合您的正确代码:

 TextBlock txtItemName = new TextBlock();
 txtItemName.Text = txtbItemName.Text;
 txtItemName.Margin = new Thickness(10, 10, 0, 0);
 cnvImage.Children.Remove(txtbItemName);
 cnvImage.Children.Add(txtItemName); 

答案 1 :(得分:2)

我认为你的txtbItemName已经是你想要的XAML元素的子节点(无法看到你的XAML)。因为你已经在你的xaml中创建了这个元素,所以它不会让你把它添加到我认为的画布中。

答案 2 :(得分:-1)

我找到了它:我确实试图放置一个已存在的物体。我不小心放置了一个现有的textBOX(txtb)而不是textBLOCK(txt)。谢谢你的帮助!