C# 如何重置groupbox中的所有项目,但不重置所述groupbox之外的任何项目?

C# 如何重置groupbox中的所有项目,但不重置所述groupbox之外的任何项目?,c#,.net,wpf,reset,groupbox,C#,.net,Wpf,Reset,Groupbox,我正在开发一个WPF应用程序,它有许多GroupBox,每个GroupBox包含3-4个控件。每个分组框都包含一个重置按钮 groupbox reset buton应该重置,而不是为每个项目显式地写一行,有没有办法让reset按钮只重置它所包含的groupbox的所有项目 在研究这个问题时,我发现了下面的帖子,这似乎很相关,但我不确定如何扩展Nathan的答案来做到这一点:你可以将其作为你需要的方法的来源 首先,您需要找到包含按钮的groupbox。要做到这一点,请使用sender参数表单cli

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

groupbox reset buton应该重置,而不是为每个项目显式地写一行,有没有办法让reset按钮只重置它所包含的groupbox的所有项目

在研究这个问题时,我发现了下面的帖子,这似乎很相关,但我不确定如何扩展Nathan的答案来做到这一点:

你可以将其作为你需要的方法的来源

首先,您需要找到包含按钮的groupbox。要做到这一点,请使用
sender
参数表单click事件,它是对单击的按钮的引用,并从该问题的一个答案调用
FindVisualParent
方法。这将为您提供groupbox

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


然后,它只是一个循环,在这个问题上,你引用。请注意,该问题是针对winforms而非wpf的,因此您必须修改处理分组控件的
controldefaults
字典(
Panel
GroupBox
),这在这里是不需要的(在wpf中不起作用).

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