Я не сказал бы плохой по сути. Я говорил с большим количеством людей, которые клянутся им, хотя я нахожу его немного подробным. Я согласился бы с routeNpingme
и сказал бы, что необходимо использовать регулярное целое число для идентификатора, но также и включать GUID (в котором Вы нуждаетесь для репликации так или иначе), "на всякий случай"
Самый простой вариант - просто сделать так, чтобы пользовательский элемент управления отображал событие щелчка и передавал событие нажатия кнопки.
В xaml MyButton:
<Button Width="Auto" HorizontalAlignment="Center" Click="onButtonClick">
В коде MyButton:
public event RoutedEventHandler Click;
void onButtonClick(object sender, RoutedEventArgs e)
{
if (this.Click != null)
{
this.Click(this, e);
}
}
Затем вы можете оставить код «реализации» как есть.
Ответ действительно зависит от ваших целей для управления. Возможно, вам удастся избежать создания пользователя или настраиваемого элемента управления, если вы сможете манипулировать данными, к которым вы привязываетесь. Если все, что вы хотите сделать, это отобразить динамическое изображение и текст, вы можете создать объект ImageText, содержащий два свойства. Затем вы можете привязать свойство Content элемента управления Button по умолчанию к этому объекту и использовать DataTemplate для определения макета содержимого.
Если вы не можете управлять типом данных, к которому вы привязываетесь, или если вы действительно настроены на идея создания элемента управления, то я бы рекомендовал создать собственный элемент управления. Пользовательские элементы управления позволяют использовать встроенные возможности стандартной кнопки.