如何通过用户控制按钮在父窗口上执行命令?

问题描述:

我想让可重用的慢跑用户控件。我在主窗口中添加了usercontrol。如何通过用户控制按钮在父窗口上执行命令?

我要让这样 用户控件按钮点击 - >“UpJogClickCommand”呼叫“UpJogRelayCommand” - >执行法(UpJogMove)

但我的代码不工作..当我点击按钮,主代码做不执行 'UpJogMove'

[JogButtonControl.xaml]

<UserControl> 
    <Grid> 
     <Button Command="{Binding UpJogClickCommand}"> 
    </Grid> 
</UserControl> 

[JogButtonControl.xaml.cs]

public partial class JogButtonControl : UserControl 
{ 
    public static readonly DependencyProperty UpJogClickCommandProperty = 
     DependencyProperty.Register(
      "UpJogClickCommand", 
      typeof(ICommand), 
      typeof(JogButtonControl)); 
    public ICommand UpJogClickCommand 
    { 
     get { return (ICommand)GetValue(UpJogClickCommandProperty); } 
     set { SetValue(UpJogClickCommandProperty, value); } 
    } 
    public JogButtonControl() 
    { 
     InitializeComponent(); 
    } 
} 

[MainWindow.xaml]

<StackPanel x:Name="TempSP" Grid.Column="7"> 
    <JogControl:JogButtonControl UpJogClickCommand="{Binding Path=UpJogRelayCommand}" 
</StackPanel> 

[MainWindow.xaml.cs]

private RelayCommand<object> _upJogRelayCommand; 
public ICommand UpJogRelayCommand 
{ 
    get 
    { 
     if (_upJogRelayCommand == null) 
     { 
      _upJogRelayCommand = new RelayCommand<object>(UpJogMove); 
     } 
     return _upJogRelayCommand; 
    } 
} 
private void UpJogMove(object notUsed) 
{ 
    Debug.Print("UpJogExcuted():"); 
    MoveToUpDirection(); 
} 
+0

我没有看到任何设置'JogButtonControl.UpJogClickCommand'属性值的代码。如果不是简单地忘记设置属性值,则需要提供可靠地再现问题的良好[mcve]。另外,要更具体地说明问题所在。这些代码做的是什么_exactly_,你想要什么,你到底想要修复它,还有什么_specifically_你还有问题。 –

就应该在你的用户控件,例如的XAML绑定的源对象通过设置RelativeSource属性:

<UserControl> 
    <Grid> 
     <Button Command="{Binding UpJogClickCommand, 
          RelativeSource={RelativeSource AncestorType=UserControl}}"> 
    </Grid> 
</UserControl> 
+0

非常感谢你的工作! –