WPF - 有没有办法从 Canvas.Children 中删除特定的子项?

2024-01-28

我正在开发一个图表控件,在其中绘制“分析范围”,它只是图表上的两条垂直线。当我想更改分析范围时,就会出现问题,因为我不知道如何仅删除两条分析范围线,所以我最终会清除图表并再次绘制实际数据值等等。有没有办法标记这些 UI 元素(即分析范围是网格线 UI 元素),以便我可以专门删除它们?我想我可以将 UI 元素的“索引”保存在某处并删除它们,但我想知道是否有更干净的方法来执行此操作。多谢。


All UIElements 有一个 UID,它是一个字符串。您可以将范围线的 UID 设置为可预测的值。请记住,UID 必须是唯一的。然后,当您只需要删除网格线时,您可以迭代 Children 集合,收集需要删除的 UI 元素的列表,然后删除它们。

像这样的东西:

Canvas c = new Canvas();
c.Children.Add( new UIElement() { Uid = "Line1" } );
c.Children.Add( new UIElement() { Uid = "Line2" } );
c.Children.Add( new UIElement() { Uid = "Line3" } );
c.Children.Add( new UIElement() { Uid = "Text1" } ); //This is added as a sample

List<UIElement> itemstoremove = new List<UIElement>();
foreach (UIElement ui in c.Children)
{
  if (ui.Uid.StartsWith("Line"))
  {
    itemstoremove.Add(ui);
  }
}
foreach (UIElement ui in itemstoremove)
{
  c.Children.Remove(ui);
}

那应该有效。在调试中对此代码进行快速测试显示子项计数为 1,仅UIElement列表中存在 Text1 的 Uid。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF - 有没有办法从 Canvas.Children 中删除特定的子项? 的相关文章

  • 控制台项目中的 WPF 窗口?

    我最近启动了一个 C 项目 VS 2008 作为 控制台 项目 我在其中编写了一些库 测试程序等 现在我想添加几个 WPF 窗口 但看起来控制台项目不会让我这样做 我来自 Java 所以这有点奇怪 如何添加 WPF 表单 我将从 主 类中实
  • 为什么有时Task明显慢于Thread?

    我正在使用 MVVM 模式制作 WPF 应用程序 我发现有时任务明显慢于线程 例如 在测试 ViewModel 中 public void DoSomething Stopwatch stopwatch Stopwatch StartNew
  • wpf 中的双显示器双窗口应用程序

    我正在尝试创建一个带有媒体元素的 wpf 视频播放器 我的目标是为该应用程序制作多个窗口 每个窗口将显示在不同的显示器上 就像主窗口将获取主显示器的分辨率并调整自身大小以全屏显示一样 辅助监视器上的第二个窗口等等 到目前为止 我已将主窗口设
  • 如何禁用箭头键更改焦点

    我有一个 WPF 窗口 其中有一些控件 按钮 组框等 和一个大控件Viewport3D在一个Border 视口显示 3D 场景 我希望使用箭头键来移动其相机 问题 方向键总是将焦点改变到另一个UIElement 如何通过箭头键禁用焦点更改并
  • 如何将 CefSharp 浏览器限制为给定域

    我想阻止我的应用程序显示特定域 即 example com 以外的网页 我最初的想法是检查请求 URL浏览前开启事件处理程序 public bool OnBeforeBrowse IWebBrowser browser IRequest r
  • WPF 中的图像变得模糊

    我正在使用 C 在 WPF 中开发应用程序 我将图像放入 WrapPanel 中 并在带有一个边框的网格内显示 并在按钮中使用图像 问题是我的图像控件失去了质量 我无法在这里发布我的图片 所以我只是在这里描述 I used SnapsToD
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • SpeechSynthesizer 中的持续内存泄漏

    我开发了一个项目 我想发布它使用 c WPF 和 System Speech Synthesizer 对象 阻止该项目发布的问题是 每当调用 SpeakAsync 时 都会留下内存泄漏 并最终导致失败 我相信在使用这个物体后我已经正确清理了
  • 可编辑的 WPF 列表框

    我有一个绑定到 WPF 中的 ListBox 的 ObservableCollection 我希望列表框可编辑 并将编辑更改保存到集合中 由于 WPF 不提供可编辑的列表框 因此我尝试通过更改 ListBox ItemTemplate 创建
  • 如何使用 RowDefinition Height * 获取网格的实际网格行高度

  • C# WPF 将粘贴在 richtextbox 中的 BitmapImage 转换为二进制

    我有一个 Richtextbox 我计划将其保存到数据库中 该数据库可以加载回同一个 Richtextbox 中 我已经让它工作了 这样我就可以将流程文档保存为 DataFormats XamlPackage 这可以保存图像 但问题是文本不
  • WPF 重用 DataGrid 模板Column DataTemplates

    我构建了一个具有自定义列的数据网格
  • 在 Fabric.js 中进行裁剪的“toDataURL”函数中,Multiplier 属性无法正常工作

    我的原始尺寸canvas is 800X700 我在用clipTo要在画布的选定部分中工作 var rect new fabric Rect left 100 top 50 fill fff width 376 height 602 str
  • HTML Canvas:旋转图像 3D 效果

    我怎样才能旋转图像 例如45度 并挤压图像 假设我有一个完美的方形图像 我可以将它旋转到我想要的任何角度 但我想让旋转后的正方形被压扁 使高度比宽度小 2 3 生成的图像将不是一个完美的旋转正方形 而是一个被压扁的正方形 你知道我怎样才能达
  • 在 ControlTemplate.Triggers 中使用 TemplateBinding

    为什么下面的 XAML 会给我一个 XamlParseException 并显示 无意义的 消息 表达式类型不是有效的样式值 在运行时
  • 同步用户控件中多个属性的绑定

    我的 WPF 用户控件有一个丑陋的竞争条件 它是某种扩展的 ComboBox UserControl主要定义了两个可绑定的DependencyProperties 一个是选中项 另一个是一个列表 可以从列表中选择选中项 两者都是可绑定的 因
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 使用 JavaScript 中的 mousemove 事件在画布内的图像上绘制矩形

    我正在尝试使用 mousemove event 在画布内的图像上绘制一个矩形 但由于clearRect 我在图像上得到了矩形 并且矩形中填充了颜色 谁能帮我解答一下 如何在图像上绘制一个只有边框的矩形 下面是我实现它所遵循的代码 var c
  • 在 WPF 中的不同控件上显示验证错误模板

    我有一个UserControl包含其他控件和TextBox 它有一个Value绑定到的属性TextBox文本并有ValidatesOnDataErrors设置为 True 当验证错误发生时Value属性绑定 错误模板 标准红色边框 显示在整

随机推荐