XAML в UWP: настройте тэг вместо атрибута Style, используя наследование - PullRequest
0 голосов
/ 23 мая 2019

Я начинаю работать над элементами управления XAML в приложении UWP.

Я хочу создать несколько вариантов одного и того же элемента управления (какая-то библиотека UI), который будет повторно использоваться в приложении, давайтескажем, «Большая кнопка» и «Маленькая кнопка».

Есть ли какие-либо проблемы с производительностью, недостатки или лучший способ добиться персонализации элемента управления «пользовательский тэг»?

(лично я нашел его более читабельным и менее подверженным ошибкам после стилизации каждого элемента управления.)

Большое спасибо!


«Обычный» способ, кажется, создает стили / шаблоны на основе Button, например так:

Styles.xaml (ResourceDictionary)

<Style x:Key="MyBigButtonStyle" TargetType="Button">
    <Setter Property="FontSize" Value="36"/>
</Style>

<Style x:Key="MySmallButtonStyle" TargetType="Button">
    <Setter Property="FontSize" Value="10"/>
</Style>

И затем объявляет элементы управления следующим образом:

MyView.xaml (Page)

<Button Style="{StaticResource MyBigButtonStyle}">My Big Button</Button>
<Button Style="{StaticResource MySmallButtonStyle}">My Small Button</Button>

Способ "пользовательского тэга" , для удобства чтения ипростота (с пользовательским в качестве правильного использования пространства имен):

MyCustomButtons.cs

namespace MyApp.MyCustomComponents
{
    public sealed class MyBigButton : Button {}
    public sealed class MySmallButton : Button {}
}

Styles.xaml

<Style Target="custom:MyBigButton">
    <Setter Property="FontSize" Value="36"/>
</Style>
<Style Target="custom:MySmallButton">
    <Setter Property="FontSize" Value="10"/>
</Style>

MyView.xaml

<custom:MyBigButton>My Big Button</custom:MyBigButton>
<custom:MySmallButton>My Small Button</custom:MySmallButton>

1 Ответ

1 голос
/ 24 мая 2019

Независимо от того, хотите ли вы создать пользовательский элемент управления или изменить шаблон или изменить стиль существующего, полностью зависит от ваших требований.В решении не участвуют «проблемы с производительностью».

Если вы не собираетесь добавлять какие-либо новые функциональные возможности к элементу управления, нет смысла создавать другой класснапример:

public sealed class MyBigButton : Button {}

Тогда вы можете просто создать собственный стиль или шаблон.

Пожалуйста, обратитесь к статье Джерри Никсона MSDN Magazine о том, как создавать собственныеэлементы управления в XAML для получения дополнительной информации.

...