0

我试图在今天下午早些时候实现一些东西,但无法让它按照我想要的方式工作。

如果我有一些如下所示的 XAML(我知道它不完整,但仅用于说明目的)......

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

...并且 UserControl1 公开了一个命令属性(目前,我为此使用了 RelayCommand),如何将 Window 中的 Button 绑定到该命令。我试图在 Window 中公开一个绑定到 UserControl1 中的 command 属性的属性,以便我可以转身并将其重新绑定到 Button,但 Window 中的属性始终为空。这种模式似乎适用于另一个属性(整数值)。有一个更好的方法吗?该命令有什么东西可以防止这种情况发生吗?

4

1 回答 1

1

(1) 将您的命令定义为 DepenedecyProperty 并实现它。

(2)在你的UserControl中绑定MyCommand属性按钮中的Command属性。

 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));

 }

xml:

 <Window>
      <StackPanel>
          <Button Command={Binding ElementName=control1,Path=MyCommand,Mode=OneWay/>
          <UserControl1 x:Name="control1" />
      </StackPanel>
 </Window>
于 2012-10-10T22:07:12.630 回答