2011-12-13 202 views
0

我正在制作一个自定义控件,它是一个可展开/可折叠面板,然后我可以使用其他控件进行填充。我不确定如何将expand/collapse命令挂钩到按钮。WPF命令和自定义控件

我用这个来获取面板听:

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

这个工作,只要我只用每个窗口一个面板。如果我使用更多面板,当按下按钮时,所有面板都会展开或折叠。我怎样才能让控件明白只有包含按钮的按钮(“命令触发器”)才能听命令?

+1

在你的ToggleBtnCommand中(它真的由by,但我个人从名称中删除Btn,因为命令是UI不可知的) - 执行处理程序,您将ExecutedRoutedEventArgs作为secong参数,您可以说OriginalSource是否是“本地”命令。 – 2011-12-13 13:09:22

+1

我想尝试的另一件事是劫持标准Expender控件,你可以调整它到一个几乎无法辨认的状态:) – 2011-12-13 13:12:13

+1

@Dmirty:好点,但你应该发布为“答案”,而不是“评论” – David

回答

0

在你ToggleBtnCommand(它是真正靠了靠,但我个人从名称中删除BTN的命令是UI不可知) - 执行处理程序你必须ExecutedRoutedEventArgs作为secong参数,通过比较其来源& OriginalSource可以说是否是“本地”命令。

[我将此评论复制到答案中,以便我可以将问题标记为已回答 - 这正在搞乱我的接受率。 :)]