gpt4 book ai didi

wpf - 指定的 Visual 已经是另一个 Visual 的子级或 CompositionTarget 的根

转载 作者:行者123 更新时间:2023-12-01 23:18:42 25 4
gpt4 key购买 nike

WPF 可视化工具视觉树 Canvas

canvas.Children.Add Poly |> 忽略

指定的视觉效果是

  1. 已经是另一个视觉对象的子级或
  2. CompositionTarget 的根。

不认为是 1),不确定 2) 是什么?

使用 Visual Studio 2010、F# 2.0、WPF...而不是 XAML

最佳答案

如果没有相关的代码示例,诊断问题有点困难,但问题可能在于您尝试将相同的多边形添加到 Canvas 的子级两次。

这是我为重现您的错误而打嗝的代码:

type SimpleWindow() as this =
inherit Window()

do
let makepoly size corners =
let size = 192.0
let angle = 2.0 * Math.PI / float corners
let getcoords size angle = new Point(size * cos angle, size * sin angle)

let poly = new Polygon(Fill = Brushes.Red)
poly.Points <- new PointCollection([for i in 0..corners-1 -> getcoords size (float i * angle)])
poly

let canvas = new Canvas(HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center)

let poly = makepoly 192.0 5
Canvas.SetLeft(poly, canvas.Width / 2.0)
Canvas.SetTop(poly, canvas.Width / 2.0)

canvas.Children.Add poly |> ignore //this works
this.AddChild canvas |> ignore

SimpleWindow().Show()

如果我添加另一个 canvas.Children.Add poly 它会崩溃并显示错误消息。

canvas.Children.Add poly |> ignore 
canvas.Children.Add poly |> ignore //this fails, poly already exists on the canvas

为了修复该错误,我首先调用 canvas.Children.Remove 来删除存在的特定子项,以便用另一个子项替换它。

canvas.Children.Add poly |> ignore 
canvas.Children.Remove poly
canvas.Children.Add poly |> ignore //this works, because the previous version is gone

我希望这能解决您的问题。

关于wpf - 指定的 Visual 已经是另一个 Visual 的子级或 CompositionTarget 的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com