0

有人有一个很好的例子来创建一个用户控件,然后将命令绑定到它吗?

我的问题是将命令转发到 UserControl 中的控件,例如转发到 TreeView 的 Drop 事件。不清楚,我该怎么做。


两个答案都很有趣,谢谢,他们有帮助,但是......

我想要这样的东西:

用法:

<my:MyControl Command="{Binding XCommand}" CommandParameter="{Binding [Here what?]}"/>

该控件包含两个 DependencyProperties,Command 和 CommandParameters,我想将这两个 DependecyProperties 绑定到 TreeView - Drop 事件。我怎样才能做到这一点?因为CommandParameter的用法相反:不是控件传递参数,而是用户想要一些东西:CommandParameter="{Binding Text, ElementName=DisableCommandTextBox}"

4

3 回答 3

2

您正在尝试将事件转发到您的视图模型。我猜你不需要 RelayCommand 但你需要 EventToCommand。我不知道绑定树视图事件,但你总是可以试一试。

使用 MVVM Light 的示例:http: //geekswithblogs.net/lbugnion/archive/2009/11/05/mvvm-light-toolkit-v3-alpha-2-eventtocommand-behavior.aspx

<Rectangle Fill="White"
           Stroke="Black"
           Width="200"
           Height="100">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseEnter">
            <cmd:EventToCommand Command="{Binding TestCommand,
                                          Mode=OneWay}"
               CommandParameter="{Binding Text,
                                  ElementName=MyTextBox,
                                  Mode=OneWay}"
               MustToggleIsEnabledValue="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Rectangle>
于 2011-07-13T15:02:38.143 回答
1

不幸的是,由于 TreeView 的限制,我们无法将视图模型中的 RelayCommand 直接绑定到 Drop 事件。

不过,这个问题之前已经解决了。看看这个链接,看看它是如何完成的。如果您想要一个更典型的命令绑定示例(可能是按钮),请在下面留言,我会添加它。

于 2011-07-13T14:56:49.713 回答
0

我只需要离开 CommandParameter,然后使用适当的参数调用 SelectedItemChanged 事件处理程序中的命令。

于 2011-07-15T09:00:26.970 回答