WPF: В чем разница между App.xaml и Generic.xaml? - PullRequest
5 голосов
/ 12 февраля 2011

Пожалуйста, дайте мне знать разницу между App.xaml и Generic.xaml, я запутался между этими двумя!

Ответы [ 4 ]

6 голосов
/ 12 февраля 2011

App.xaml является частью XAML класса Application - единого централизованного места, где вы определяете логику и ресурсы всего приложения. Хотя Generic.xaml находится в каталоге Themes вашего проекта, это словарь, в котором вы определяете стили по умолчанию для всех своих пользовательских элементов управления. Этот словарь используется, когда в папке Themes отсутствует словарь для темы Windows. Например, у вас может быть следующая структура каталога Themes:

MyProject
   - Themes
     - Generic.xaml // Default styles if current theme is non of the themes below
     - Classic.xaml // Styles for “Classic” Windows 9x/2000 look on Windows XP.
     - Luna.NormalColor.xaml // Styles for default blue theme on Windows XP.
     - Luna.Homestead.xaml //  Styles for olive theme on Windows XP.
     - Luna.Metallic.xaml // Styles for silver theme on Windows XP.
     - Royale.NormalColor.xaml // Styles for default theme on Windows XP Media Center Edition.
     - Aero.NormalColor.xaml // Styles for default theme on Windows Vista

Если вы хотите, чтобы пользовательский элемент управления выглядел одинаково в любой теме Windows, вам нужно создать только Generic.xaml.

Итак, в основном вы должны использовать Generic.xaml только для определения стилей для вашего пользовательского элемента управления и App.xaml для всего остального (например, ваши кисти, цвет и т. Д. Или ваши собственные стили для стандартных элементов управления).

См. Также ответ на этот вопрос: Что такого особенного в Generic.xaml?

1 голос
/ 12 февраля 2011

App.xaml используется для ресурсов всего приложения и поэтому может содержать ссылки на другие ресурсы XAML.

<Application
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  x:Class="App">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/ValidationStyles.xaml"/>
                <ResourceDictionary Source="Themes/ControlStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Это позволяет вам изолировать ваши стили в данном файле XAML для удобства управления, а затем будет использовать файл в приложении, так как он сливается с приложением во время выполнения.

generic.xaml используется в качестве контейнера по умолчанию для стиля по умолчанию пользовательского элемента управления. Фреймворк будет искать в каталоге Themes значение generic.xaml при определении стиля для данного типа.

1 голос
/ 12 февраля 2011

App.xaml - это контейнер для ресурсов уровня приложения.

Generic.xaml - это файл ресурсов для всех ваших элементов управления, которые не основаны на пользовательской или стандартной теме.

1 голос
/ 12 февраля 2011

App.xaml используется для ресурсов всего приложения и используется всегда.

Generic.xaml используется для шаблонов и стилей для пользовательских элементов управления и будет использоваться, если вы не зададите другой стиль илишаблон на контрольном уровне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...