【问题标题】:How to reset all items in a groupbox, but not any items outside said groupbox?如何重置组框中的所有项目,但不重置所述组框之外的任何项目?
【发布时间】:2012-08-03 04:54:39
【问题描述】:

我正在开发一个 WPF 应用程序,它有许多组框,每个组框包含 3-4 个控件。这些组框中的每一个都包含一个重置按钮。

不是为每个项目显式编写一行,而是应该重置 groupbox 重置按钮,有没有办法让重置按钮只重置它所在的 groupbox 的所有项目?

在研究此问题时,我发现以下帖子似乎相关,但我不确定如何扩展 Nathan 的答案来做到这一点:What is the best way to clear all controls on a form C#?

【问题讨论】:

    标签: c# .net wpf reset groupbox


    【解决方案1】:

    您可以使用this question 作为您需要的方法的来源。

    首先你需要找到包含按钮的组框。为此,请使用 sender 参数表单单击事件,它引用被单击的按钮并从该问题的答案之一中调用 FindVisualParent 方法。这将为您提供组框。

    然后通过FindVisualChildren<DependencyObject>方法查找所有ui元素。这将为您提供要清除的超级控件集。

    那么这只是您引用的问题的循环。请注意,该问题是针对 winforms 而不是 wpf 的,因此您必须修改处理分组控件的 controldefaults 字典 ~(Panel GroupBox) 此处不需要(并且在 wpf 中不起作用)。

    【讨论】:

      【解决方案2】:

      你可以给每个控件添加一个标签,告诉你在控件中正在编辑哪个属性,然后在按下复位键时,你向上移动按钮以查找包含 GroupBox,然后向下查找包含在此 GroupBox 中的所有控件,然后您可以通过 TAG 找到需要重置的属性的名称。然后使用 Reflexion 重置属性。
      也许一个问题是默认值可能并不明显。但是您可以将所有绑定的默认值存储在静态对象中,并将此重置对象的属性值复制到当前状态对象中。 Rq :您也可以使用反射来获取当前 GroupBox 的所有控件的绑定,然后从绑定中获取有界属性,因此不需要 TAG。但是,如果一个控件有多个绑定,您将不知道要重置哪一个。在我的例子中,GroupBoxes 中的控件还具有颜色绑定,以指示它们是否具有默认值(绿色)或非默认值(红色),因此需要一个 TAG。 (但颜色指示器是只读的,因此反射实际上也可以与反射的更多使用一起使用......当我看到它时我懒得改变工作逻辑:-))
      我不知道你的绑定,所以很明显我不知道什么是最好的,我希望这能有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-14
        • 2013-11-16
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        • 2020-12-13
        • 1970-01-01
        相关资源
        最近更新 更多