Csharp/C#教程:在WPF中从窗口中删除控件分享


在WPF中从窗口中删除控件

如何从WPF中的窗口中删除控件? RemoveLogicalChild仅将其作为逻辑子项删除,但仍保持可见状态。

可视化树中的每个元素都是树的根,如Window ,或另一个元素的子元素。 理想情况下,您将知道哪个元素是您要删除的元素的父元素,以及它是什么类型的FrameworkElement

例如,如果您有一个Canvas和许多子项,并且您有一个之前添加到CanvasRectangle ,您可以通过从Canvas删除它来将其从Canvas删除,如下所示:

 canvas.Children.Remove(control); 

但是如果你不知道控件的父级是谁,你可以使用VisualTreeHelper.GetParent方法找出:

 DependencyObject parent = VisualTreeHelper.GetParent(control); 

您现在面临的问题是parentDependencyObject ,虽然它可能也是一个FrameworkElement ,但您不知道它是哪种元素。 这很重要,因为您删除孩子的方式取决于类型。 如果父项是Button ,则只需清除Content属性即可。 如果父级是Canvas ,则必须使用Children.Remove

通常,您可以通过检查项是否为Panel然后从其子项中删除来处理最常见的情况,否则如果它是ContentControl (如Window ),则将其Content属性设置为null 。 但这不是万无一失的; 还有其他情况。

您还必须注意不要删除从模板中展开的内容,因为这不是您可以随意修改的静态内容。 如果添加了控件或存在于静态XAML中,则可以安全地将其删除。

要检查父类型,您还可以使用GetType方法添加toString方法并进行比较。 例如,当父Object是canvas时,将返回字符串“System.Windows.Controls.Canvas”

您可以使用它来删除子画面,在本例中为canvas。

上述就是C#学习教程:在WPF中从窗口中删除控件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 private void RemoveControl() { name = myUserControl.GetValue(NameProperty).ToString(); myCanvas.Children.Remove(myUserControl); NameScope.GetNameScope(this).UnregisterName(name); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1021616.html

(0)
上一篇 2022年1月6日
下一篇 2022年1月6日

精彩推荐