Befestigen Sie ICommand im WPF-UserControl

Implementiert habe ich eine einfache Schaltfläche mit einem Bild in ihm:

    <Button Command="{Binding ButtonCommand, ElementName=ImageButtonControl}">
        <StackPanel Orientation="Horizontal">
            <Image Source="{Binding ButtonImage, ElementName=ImageButtonControl}"/>
            <TextBlock Text="{Binding ButtonText, ElementName=ImageButtonControl}" Margin="2,0,0,0"/>
        </StackPanel>
    </Button>

Wie Sie sehen können, ich setze ein ButtonCommand-Eigenschaft, um in der Lage sein zu befestigen, wird ein ICommand zu diesem UserControl:

public partial class ImageButton : UserControl
{
    ///<summary>
    ///The dependency property that gets or sets the source of the image to render.
    ///</summary>
    public static DependencyProperty ImageSourceProperty = 
        DependencyProperty.Register("ButtonImage", typeof(ImageSource), typeof(ImageButton));

    public static DependencyProperty TextProperty =
        DependencyProperty.Register("ButtonText", typeof(string), typeof(ImageButton));

    public static DependencyProperty ButtonCommandProperty =
        DependencyProperty.Register("ButtonCommand", typeof(ICommand), typeof(ImageButton));

    public ImageButton()
    {
        this.DataContext = this;
        InitializeComponent();
    }

    ///<summary>
    ///Gets or sets the button command.
    ///</summary>
    public ICommand ButtonCommand
    {
        get { return (ICommand)GetValue(ImageButton.ButtonCommandProperty); }
        set { SetValue(ImageButton.ButtonCommandProperty, value); }
    }

    ///<summary>
    ///Gets or sets the button image.
    ///</summary>
    public ImageSource ButtonImage
    {
        get { return (ImageSource)GetValue(ImageButton.ImageSourceProperty); }
        set { SetValue(ImageButton.ImageSourceProperty, value); }
    }

    ///<summary>
    ///Gets or sets the button text.
    ///</summary>
    public string ButtonText
    {
        get { return (string)GetValue(ImageButton.TextProperty); }
        set { SetValue(ImageButton.TextProperty, value); }
    }
}

Dann, wenn ich erkläre, meine Taste, es gibt diese:

<uc:ImageButton Grid.Row="1" Grid.Column="0" ButtonCommand="{Binding AttachContextCommand}" ButtonImage="{StaticResource AssociateImage}" ButtonText="Associer"/>

Und badaboom, nichts nie passieren, wenn ich auf meine ImageButton.
Wenn ich ersetzen Sie den ImageButton mit einer einfachen Schaltfläche, die ICommand genannt wird.

Ich habe sogar versucht, einfach erweitert die Klasse Button und einen ICommand binden, aber wieder, es hat nicht funktioniert...

Hilfe dankbar !

Thx.

  • Ist es so, dass die Taste deaktiviert ist, oder, dass Sie darauf klicken und nichts passiert?
  • Ich klicke es an und der Befehl wird nie aufgerufen...
InformationsquelleAutor Roubachof | 2009-03-13
Schreibe einen Kommentar