Я делаю пользовательский элемент управления, который имеет две совершенно разные потребности в стилизации. Один для базового вида, а другой для более продвинутого.
Мой элемент управления содержит свойство зависимости для следующего перечисления:
public enum ControlTypes
{
Basic,
Advanced
}
Я создал два стиля в generic.xaml (с очень разными шаблонами) и дал каждому ключ.
Внутри обработчика изменений для свойства enum я пытаюсь найти стили и установить правильный.
private static void OnControlTypePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var myCustomControl = (MyCustomControl)d;
var basicControlStyle = Application.Current.TryFindResource("BasicControlStyle") as Style;
var advancedControlStyle = Application.Current.TryFindResource("AdvancedControlStyle") as Style;
if (myCustomControl.ControlType == ControlTypes.Basic)
myCustomControl.Style = basicControlStyle;
else if (myCustomControl.ControlType == ControlTypes.Advanced)
myCustomControl.Style = advancedControlStyle;
}
Два стиля всегда нулевые. Я не уверен, как получить стили изнутри generic.xaml. Или есть лучший способ поменять мои стили?