Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF命令和自定义控件_Wpf_Command_Custom Controls - Fatal编程技术网

WPF命令和自定义控件

WPF命令和自定义控件,wpf,command,custom-controls,Wpf,Command,Custom Controls,我正在制作一个自定义控件,它是一个可扩展/可折叠的面板,然后我可以用其他控件填充它。我不确定如何将展开/折叠命令挂接到按钮上 我用这个来让小组听: CommandManager.RegisterClassInputBinding(GetType(Button), New InputBinding(ToggleBtnCommand, New MouseGesture(MouseAction.LeftClick))) CommandManager.RegisterClassComma

我正在制作一个自定义控件,它是一个可扩展/可折叠的面板,然后我可以用其他控件填充它。我不确定如何将展开/折叠命令挂接到按钮上

我用这个来让小组听:

    CommandManager.RegisterClassInputBinding(GetType(Button), New InputBinding(ToggleBtnCommand, New MouseGesture(MouseAction.LeftClick)))
    CommandManager.RegisterClassCommandBinding(GetType(Button), New CommandBinding(ToggleBtnCommand, AddressOf btnToggleState))

只要我每个窗口只使用一个面板,这就行了。如果我使用更多面板,当按下按钮时,所有面板都会展开或折叠。我怎样才能让控件理解只有包含按下按钮的命令触发器才应该侦听命令?

在您的ToggleBTN命令中,它实际上是由by执行的,但我个人会从名称中删除Btn,因为命令是UI不可知的-执行处理程序您会将RoutedEventArgs作为一个独立参数执行,通过比较它的源代码和OriginalSource,您可以确定它是否是“本地”命令


[我将此评论复制到答案中,以便我可以将问题标记为已回答-这会影响我的接受率。]

在您的ToggleBtnCommand中,它实际上是由by完成的,但我个人会将Btn从名称中删除,因为命令与UI无关-执行处理程序您会将RoutedEventArgs作为独立参数执行,通过比较它的源代码和OriginalSource,你可以判断它是否是一个“本地”命令。我会尝试的另一件事是劫持标准的Expender控件,你可以将它调整到几乎无法识别的状态:@Dmirty:很好,但你应该发布答案,而不是评论Dave说的话。否则我不能给你应得的名声