2011-07-13 22 views
0

有人創建一個UserControl,然後將命令綁定到它的一個很好的例子?帶有RelayCommand的MVVM中的Silverlight UserControl <T> - 示例?

我的問題是命令轉發到用戶控件控制,例如一個TreeView的Drop事件。目前還不清楚,我該怎麼做。


兩個答案非常有趣和感謝,他們幫助,但...

我想這樣的事情:

用法:

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

控制包含兩個DependencyProperties,Command和CommandParameters,我想將這兩個DependecyProperties綁定到TreeView - Drop事件。我怎樣才能做到這一點?由於CommandParameter的使用是相反的:不控制傳遞參數,但用戶想要的東西:CommandParameter =「{結合文本,的ElementName = DisableCommandTextBox}」

回答

1

不幸的是,我們不能在視圖模型中綁定RelayCommand由於TreeView的限制,直接導致Drop事件。

但是,此問題已被解決。看看這個link看看它是如何完成的。如果您想更典型的命令結合(或許一個按鈕)的例子,發表以下,我會補充說,。

2

您正在試圖將事件轉發到您的視圖模型。我想你不需要RelayCommand,但你需要EventToCommand。我不知道綁定treeview事件,但你可以隨時試一試。

例使用MVVM光: 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> 
0

我不得不離開CommandParameter,我在此時,相應的參數SelectedItemChanged事件處理程序調用命令。