gpt4 book ai didi

银光 4 : How to access control created from codebehind

转载 作者:行者123 更新时间:2023-12-04 03:00:00 24 4
gpt4 key购买 nike

我正在尝试创建一种方法来在两个用户控件之间绘制一条线(路径)。我发现某人的帖子为我提供了有关如何执行此操作的一般指示,我成功地实现了代码并开始根据我的需要对其进行调整。

我在访问用户控件时遇到问题:

Button b2 = new Button();
var transform2 = b2.TransformToVisual(b2.Parent as UIElement);

正常工作,但我的按钮是通过一种方法动态创建的,因此我无法将它们作为“b2”访问。

我尝试了以下方法:

var transfrom3 = canvas1.Children[0].TransformToVisual(canvas1.Children[0].Parent as UIElement);

但像这样访问它会给我一个关于 .Parent 的错误。

如果也试过:

                var p1 = this.FindName(ps.ProcessID.ToString());
var p2 = this.FindName(ps.PreID.ToString());

////get geo data from both controls
var transform1 = p1.TransformToVisual(p1.Parent as UIElement);
var transform2 = p2.TransformToVisual(p2.Parent as UIElement);

谁能告诉我如何访问这些用户控件?

最佳答案

这一行应该有效:-

var transfrom3 = canvas1.Children[0].TransformToVisual(canvas1.Children[0].Parent as FrameworkElement);

因为您已经发现 UIElement 没有 Parent,它是添加了 Parent 属性的 FrameworkElement .

不过,通过名称访问控件会更好(我假设您正在为动态添加的控件分配一个 Name)。

这个:-

var p1 = this.FindName(ps.ProcessID.ToString());

假设 thisUserControl 并且相关的 FrameworkElement 在 code 中被赋予了匹配的名称,则应该可以工作:-

canvas1.Children.Add(new Button() {Name = ps.ProcessID.ToString(), Content="Hello"});

关于银光 4 : How to access control created from codebehind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131733/

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