Создайте библиотеку кнопок XAML в C#

В этом примере показано, как можно создать библиотеку кнопок XAML с возможностью повторного использования в WPF.

Пример Создание шаблона кнопки WPF в C# использует шаблон кнопки WPF для создания приятных круглых кнопок, которые соответствующим образом меняют внешний вид, когда они отключены, нажаты или когда мышь перемещается над ними.

Шаблон кнопки определяет основной вид и поведение кнопок, но основной код XAML программы должен размещать контент на кнопках. Например, следующий код показывает, как основная программа определяет свою кнопку воспроизведения.

Все в порядке, но что, если я хочу добавить несколько копий одних и тех же кнопок в программу? Или что, если я хочу создать другую программу для управления другим видео? В таких случаях мне нужно будет скопировать код, чтобы создать новые кнопки. (Возможно, вы также можете скомпилировать кнопки в библиотеке управления, но я надеялся на все решение XAML.)

Чтобы создать библиотеку кнопок XAML, я бы хотел определить набор стилей, в которых используется шаблон кнопки, чтобы определить появления кнопок. Например, мне нужен стиль с именем BtnPlayStyle, который определяет кнопку воспроизведения. Затем я могу создавать кнопки, которые используют этот стиль.

Я бы подумал, что это будет не слишком сложно, но есть довольно большой улов. Стиль использует сеттеры для определения свойств управления, но не может напрямую установить свойство Content элемента управления для хранения других элементов управления.

К счастью, есть способ обойти это. Стиль может определять DataTemplate, который указывает, как должны отображаться данные, привязанные к элементу управления. Кнопки видео не отображают связанные данные, но DataTemplate может определять элементы управления, которые должны находиться внутри кнопки.

Например, следующий код показывает определение BtnPlayStyle.

DataTemplate содержит Path, который определяет стрелку кнопки воспроизведения.

Словарь ресурсов VideoButtons в программе программы определяет все стили кнопок управления видео. Основной файл XAML включает библиотеку с помощью объекта MergedDictionaries, как в следующем коде.


    
        
            
        
    

Теперь основной файл XAML может использовать библиотеку кнопок, как в следующем коде.

Источник: http://csharphelper.com/blog/2015/10/make-a-xaml-button-library-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector