2012-10-10 50 views
0

我試圖在今天下午早些時候實施某些事情,但無法按照自己的方式使其工作。綁定到通過用戶控制暴露的命令

如果我有一些XAML如下內容(我知道這是不完整的,但它是僅供參考)...

<Window> 
    <StackPanel> 
    <Button /> 
    <UserControl1> 
    </StackPanel> 
</Window> 

...和公開的UserControl1的命令屬性(目前,我我正在使用RelayCommand),如何將窗口中的Button綁定到此命令。我嘗試在Window中顯示一個屬性,該屬性綁定到UserControl1中的命令屬性,以便我可以轉身和重新綁定 this到Button,但Window中的屬性始終爲null。這個模式似乎適用於另一個屬性(一個整數值)。有一個更好的方法嗎?有什麼防止這種情況發生的命令?

回答

1

(1)將您的命令定義爲DepenedecyProperty並實現它。 (2)將按鈕中的Command屬性綁定到UserControl中的MyCommand屬性。

public Class UserControl1 : UserControl 
{ 

     public UserControl1() 
     { 
      MyCommad = new RelayCommand 
        (
         () => { // do some stuff in execute delegate}, 
         () => { return true ;}               
        ); 
     } 

     public bool MyCommand 
     { 
      get { return (ICommand)GetValue(MyCommandProperty); } 
      set { SetValue(MyCommandProperty, value); } 
     }  

     public static readonly DependencyProperty MyCommandProperty = 
          DependencyProperty.Register("MyCommand", typeof(ICommand),new FrameworkPropertyMetadata(null)); 

} 

XAML:

<Window> 
     <StackPanel> 
      <Button Command={Binding ElementName=control1,Path=MyCommand,Mode=OneWay/> 
      <UserControl1 x:Name="control1" /> 
     </StackPanel> 
</Window> 
+0

這是有道理的。我將如何綁定* re-expose *窗口的視圖模型中的用戶控件公開的命令? –

+0

您是否需要將每個用戶控件中的Command綁定到多個地方? –