Я создал собственный элемент управления и стиль по умолчанию для него.
Мой XAML прост:
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border CornerRadius="10" BorderThickness="1" Background="Transparent" BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я подключаюсь к этому стилю, используя DefaultStyleKey:
DefaultStyleKey = typeof(MyControl);
И это работает.Но теперь я хочу создать другой стиль для моего контроля.Это потому, что у моего элемента управления могут быть некоторые режимы, определенные как перечисления, например:
public enum ControlMode
{
Mode1,
Mode2
}
Теперь, когда мой элемент управления находится в режиме 1, я хочу, чтобы он имел стиль по умолчанию.Но когда он в Mode2, я хочу, чтобы у него был другой стиль, например:
<Style TargetType="{x:Type local:MyControl}" x:Key"styleForMode2>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="1" Background="White" BorderBrush="Black"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Как я могу этого достичь?DefaultStyleKey работает только для имени типа, поэтому единственное, что я придумал, - это создание другого класса для моего элемента управления: MyControlWithMode2.Но я уверен, что есть более правильный путь.Правильно?
(это библиотека, а не приложение, поэтому я не могу использовать ресурсы приложения)