Ответ 1
Попробуйте следующее:
editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))
И я не знаю, как вы можете применить стиль темы без указания BasedOn
. Если есть такой способ, я хотел бы это знать...
Как вы можете установить следующее в коде?
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
Я использую тему, объединенную в App.xaml. Он отлично работает для всех элементов управления, но когда я определяю стиль для чего-то, например. TextBox
, стиль темы не подбирается, если я не использую BasedOn
, как указано выше, вместо этого он получает стиль TextBox
по умолчанию.
Теперь я создаю код DataGridTextColumn
в коде и не могу получить часть BasedOn
для EditingElementStyle
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;
Любые предложения? Кроме того, есть ли способ получить стиль темы вместо стандартного стиля, применяемого без использования BasedOn?
Спасибо
Попробуйте следующее:
editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))
И я не знаю, как вы можете применить стиль темы без указания BasedOn
. Если есть такой способ, я хотел бы это знать...
Это должно работать:
Style baseStyle = new Style(typeof(TextBox));
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = baseStyle;
Вы также можете сделать это в конструкторе:
Style editingStyle = new Style(typeof(TextBox), baseStyle);
Мне нравится ответ Павла Глазкова, но он не компилируется.
FindResource является (нестатический) член FrameworkElement. Требуется определить контекст запроса на поиск.
Поэтому я рекомендую это:
style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));