2015-12-22 3 views
0

У меня есть несколько стилей-файлов.Пользовательские элементы управления, указанные на базовой странице

Например ButtonStyles.xaml выглядит следующим образом:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <Style 
     x:Key="CustomButtonStyle" 
     TargetType="Button"> 

     <Setter 
      Property="Foreground" 
      Value="White" /> 

     <Setter 
      Property="Background" 
      Value="Black" /> 

     <Setter 
      Property="Height" 
      Value="32" /> 

    </Style> 

    <Style 
     TargetType="Button" 
     BasedOn="{StaticResource CustomButtonStyle}"> 

    </Style> 
</ResourceDictionary> 

И у меня есть страницы, которые проходят от моего BasePage. Если я хочу, чтобы мои новые стили, чтобы переопределить элементы управления я должен добавить этот код на каждой странице:

<Page.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="../Styles/ButtonStyles.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Page.Resources> 

Однако, если у меня есть этот код в моем BasePage это не будет тема моего управления.

Есть ли способ импортировать мои стили на каждой странице без копирования и вставки этого кода снова и снова?

ответ

1

Я не могу воспроизвести эту проблему с использованием BasePage на моей стороне. Было бы лучше, если бы вы могли опубликовать образец, который может воспроизвести вашу проблему.

Однако, чтобы использовать пользовательские стили на каждой странице, я рекомендую объединить ресурсные словари в Application.Resources. Application.Resources - это лучшее место для размещения любых ресурсов приложения, на которые ссылаются несколько страниц в структуре навигации вашего приложения. Если запрашиваемый ресурс не найден в Page.Resources, система ресурсов XAML попытается проверить свойство Application.Resources. Поэтому, если мы объединим ресурсные словари в Application.Resources, мы можем использовать их на всех страницах приложения. И если мы хотим использовать некоторые разные стили на определенных страницах, мы можем указать новые Style в их Page.Resources. Для получения дополнительной информации см. Lookup behavior for XAML resource references.

Таким образом, мы можем объединить словари ресурсов в Application.Resources как следующие:
(Обратите внимание, что ../Styles/ButtonStyles.xaml не могут быть использованы в WinRT XAML, мы должны использовать «/» для обозначения корня пакета.)

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Styles/ButtonStyles.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Тогда на других страницах, если мы не укажем Style для Button, он будет использовать стиль, определенный в ButtonStyles.xaml.

+0

Aaah, это здорово. Я должен сделать это в ресурсах приложения не в ресурсах страницы. спасибо – TableCreek

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