2013-02-12 3 views
0

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

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

До сих пор я делал это в XAML, создавая в ресурсов в <Style></Style>, и назвав его помощью Style="{StaticResource StyleName}". Но я хочу добавить его в файлы темы вместо этого, и я не знаю, как дать ему имя и вызвать его из xaml.

Я предполагаю, что начну с чего-то подобного, но как мне связать оба элемента?

В файле темы (MyStyles.xaml или TextEdit.xaml или аналогичный):

<Style TargetType="{x:Type TextBlock}" x:Key="KeyName" ???> 
     <Setter Property="Foreground" Value="Blue" /> 
</Style> 

, а затем в мой XAML:

<TextBlock Name="TextBlockName" 
     Style="{???}"> 
</TextBlock> 

Мне нужен этот стиль, чтобы быть в Тема, потому что программа позволит пользователям изменять темы, и эти стили не могут быть жестко закодированы в xaml.

ответ

1

Вы хотите объединить первый файл ресурсов в ваши ресурсы:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="MyStyles.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
     <dxc:IntToBooleanConverter x:Key="IntToBooleanConverter" /> 
     (...) 
    </ResourceDictionary> 
</UserControl.Resources> 

, а затем вы можете использовать его с

<TextBlock Name="TextBlockName" Style="{StaticResource KeyName}" /> 
+0

Будет ли изменение файла автоматически, если я поменять тему? – Yisela

+0

@yisela Да, это то, что я использую, чтобы сохранить стили в центре и убедиться, что мое приложение выглядит одинаково между окнами. – JBG

1

Если вы загрузили файл Theme Вы можете получить доступ к любой из стилей/ресурсов точно так же, как местные стили/Ресурсы

Если вы используете Style="{StaticResource StyleName}" это будет выглядеть первый в Window/UserControl, если не нашли будут выглядеть, как загруженные словари ресурсов. так что пока вы загрузите тему (ресурсный словарь), она будет работать нормально.

Смежные вопросы