How to wire up a click event for a custom usercontrol button? Should I use CustomControl?

后端 未结 2 1382
青春惊慌失措 2021-02-20 14:57

I wanted to create a button that had an image and a textblock as content. So I went about looking for an answer and found a post (Reusable Custom Content for Buttons) w

  • 2021-02-20 15:19

    The easiest option would be to just make your UserControl expose a click event, and pass through your Button's click event.

    In MyButton's xaml:

    <Button Width="Auto" HorizontalAlignment="Center" Click="onButtonClick">

    In MyButton's code:

    public event RoutedEventHandler Click;
    void onButtonClick(object sender, RoutedEventArgs e)
        if (this.Click != null)
            this.Click(this, e);

    You can then leave your "implementation" code as-is.

    0 讨论(0)
  • 2021-02-20 15:24

    The answer really depends on what your goals are for the control. You may be able to get away with not creating a user or custom control if you can manipulate the data that you are binding to. If all you want to do is display a dynamic image and text, then you could create an ImageText object that contains two properties. You could then bind the default Button control's Content property to this object and use a DataTemplate to define the layout of the content.

    If you cannot control the data type that you are binding to, or if you're really set on the idea of creating a control then I would recommend creating a custom control. Custom controls allow you to utilize the built-in capabilities of a standard button. Generally you would only want to create a User Control if you wanted to hide or encapsulate the default functionality of the visual controls contained within the control.

    Good luck.

    0 讨论(0)