1

这看起来很简单,但我在网上找不到任何关于我想添加到自定义控件的行为。

我的自定义控件是一个带有选项列表的文本框。当用户输入的文本不是列表的一部分时,将出现一个弹出列表,允许用户选择正确的选项。

有时,容器上可能有一个默认按钮,其中添加了自定义控件。如果是这样,当按下回车键时,如果文本错误,则必须显示弹出窗口。如果没有默认按钮,则在输入时,即使文本错误也不会发生任何事情。

为了能够创建这种行为,我必须能够检测到容器中是否存在默认按钮,并且必须在自定义控件的 c# 代码中完成。

我希望描述足够清楚。提前致谢

4

2 回答 2

1

您是否考虑过实现 MVVM 方法和命令模式?只要您的视图模型知道选择是什么,您就可以将默认按钮绑定到命令。只要命令 CanExecute 处理程序返回 false,即没有输入/选择适当的选项,按钮将被禁用并且不会响应用户按下 enter。

于 2011-08-08T15:14:55.723 回答
0

由于我无法知道自定义控件中还有哪些其他控件,因此我选择这样:

我创建了一个递归函数来使用“拥有父级”来查找第一个FrameworkElement.Parent 父级,我可以查看它包含的每个控件。当我看到一个按钮时,我必须验证是否IsDefault. 对于这个,我使用了VisualTreeHelper GetChildrenCount(DependencyObject obj_Parent)and GetChild(DependencyObject obj_Parent, int childIndex)。再次递归...

即使这意味着要执行更多代码,它也能很好地工作。

于 2011-08-09T12:52:30.347 回答