WPF UserControls - setting the .Command property on button inside UserControl

后端 未结 1 544
我寻月下人不归
我寻月下人不归 2021-02-14 14:42

I\'ve got a UserControl that contains a button and some other controls:


  
     
相关标签:
1条回答
  • 2021-02-14 14:59

    Add a dependency property to your UserControl and bind the button's Command property to that.

    So in your GreatUserControl:

    public ICommand SomeCommand
    {
        get { return (ICommand)GetValue(SomeCommandProperty); }
        set { SetValue(SomeCommandProperty, value); }
    }
    
    public static readonly DependencyProperty SomeCommandProperty =
        DependencyProperty.Register("SomeCommand", typeof(ICommand), typeof(GreatUserControl), new UIPropertyMetadata(null));
    

    And in your GreatUserControl's XAML:

    <UserControl 
        x:Class="Whatever.GreatUserControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Name="me"
        >
        <Button Command="{Binding SomeCommand,ElementName=me}">Click Me!</Button>
    </UserControl>
    

    So your button binds to the command on the UserControl itself. Now you can set that in your parent window:

    <my:GreatUserControl SomeCommand="{Binding SomeCommandHere}" />
    
    0 讨论(0)
提交回复
热议问题