Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将按钮添加为DrawingVisual的子级_C#_Wpf - Fatal编程技术网

C# 如何将按钮添加为DrawingVisual的子级

C# 如何将按钮添加为DrawingVisual的子级,c#,wpf,C#,Wpf,我有一个从Canvas继承的DerivedCanvas类。我使用它来绘制多个自定义图形视觉效果,但不知道如何将按钮对象添加为DrawingVisual对象的子对象。下面是我在DrawingVisual中使用的代码,但在运行时没有显示任何内容。作为DrawingVisual的子级添加按钮是不可能的,还是我只是做错了 Button button = new Button { Content = "Exit", Width = 70, Height = 23 }; this.Children.Add(

我有一个从Canvas继承的DerivedCanvas类。我使用它来绘制多个自定义图形视觉效果,但不知道如何将按钮对象添加为DrawingVisual对象的子对象。下面是我在DrawingVisual中使用的代码,但在运行时没有显示任何内容。作为DrawingVisual的子级添加按钮是不可能的,还是我只是做错了

Button button = new Button { Content = "Exit", Width = 70, Height = 23 };
this.Children.Add(button);

你确定你的代码已经执行了吗?放置断点。“this”也可能不是指您想要的对象。

您确定代码已执行吗?放置断点。另外,“this”可能也不是指您想要的对象。

试试这个(假设
dv
是您的
DrawingVisual
对象,
size
dv
的大小):

尝试此操作(假设
dv
是您的
DrawingVisual
对象,
size
dv
的大小):


1.添加try-catch以处理异常。
2.我猜按钮已经创建并添加了。但坐标超出了可视范围。您应该更改按钮的坐标并刷新。

1.添加try catch以处理异常。
2.我想按钮已经创建并添加了。但坐标超出了可视范围。您应该更改按钮的坐标并刷新。

我已经完成了这项工作,并使其正常工作。然而,我是从控制中派生出来的,所以这可能会有所不同。另外,您什么时候添加子控件?太好了!至少我知道这是可能的!我在绘制父视图之前和之后都添加了子控件,但两者都不起作用。有没有可能分享你的代码?我已经做了这件事,并让它工作。然而,我是从控制中派生出来的,所以这可能会有所不同。另外,您什么时候添加子控件?太好了!至少我知道这是可能的!我在绘制父视图之前和之后都添加了子控件,但两者都不起作用。是否可以共享您的代码?我添加了一个断点,代码已执行。此外,“这个”的儿童人数增加了一名这“确实引用了我想要的对象,但屏幕上仍然没有绘制任何内容。我添加了一个断点,代码被执行。此外,“这个”的儿童人数增加了一名“这”指的是我想要的对象,但屏幕上仍然没有绘制任何内容。
foreach (var child in dv.Children)
{
    var element = child as UIElement;
    if (element == null) continue;
    element.Arrange(new Rect(size));
}