这看起来很简单,但我在网上找不到任何关于我想要添加到自定义控件的行为。
我的自定义控件是一个带有选项列表的textBox。当用户输入的文本不是列表的一部分时,将出现一个弹出窗口,其中列表允许用户选择正确的选项。
有时,容器中可能有一个默认按钮,其中添加了自定义控件。如果是这样,当按下回车键时,如果文本错误,则必须显示弹出窗口。如果没有默认按钮,则在输入时,即使文本错误也不会发生任何事情。
为了能够创建这种行为,我必须能够检测容器中是否存在defaultbutton,并且必须在cutom控件的c#代码中完成。
我希望描述足够清楚。 提前致谢
答案 0 :(得分:1)
您是否考虑过实施MVVM方法和Command模式?只要您的视图模型知道选项是什么,您就可以将默认按钮绑定到命令。只要命令CanExecute处理程序返回false,即没有输入/选择适当的选项,该按钮将被禁用,并且不会响应用户按回车。
答案 1 :(得分:0)
由于我无法知道我从自定义控件中获得了哪些其他控件,所以我选择了这样:
我做了一个递归函数,用FrameworkElement.Parent
查找第一个父项
有了父母,我可以看看它包含的每个控件。
只要看到一个按钮,我就必须验证是否IsDefault
。
对于这个,我使用了VisualTreeHelper
GetChildrenCount(DependencyObject obj_Parent)
和GetChild(DependencyObject obj_Parent, int childIndex)
。递归再次......
即使它意味着要执行更多代码,它也能很好地工作。