ResourceDictionary и стили не объединяются в приложении - PullRequest
2 голосов
/ 18 января 2012

У меня есть приложение, которое использует ResourceDictionary для установки стилей, что он делает красиво. Однако шрифт немного маленький, и я хотел бы изменить его, но каталог ресурсов взят из .dll, поэтому я не могу его редактировать.

Как вы заметили, я только начинаю со словарей.

Я думал, что могу переопределить это, используя MergedDictionaries, и просто добавить стиль для переопределения:

<Application x:Class="IDIUserInterface.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Windows/WindowMain.xaml" >
<Application.Resources>

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="/ReuxablesLegacy;component/mercury.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="Window">
            <Setter Property="FontSize" Value="12" />
            <Setter Property="FontFamily" Value="Arial" />
        </Style>
        <Style TargetType="Page">
            <Setter Property="FontSize" Value="12" />
            <Setter Property="FontFamily" Value="Arial" />
        </Style>
    </ResourceDictionary>

</Application.Resources>

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

Есть ли причина для этого, или я делаю что-то не так?

Спасибо заранее, SumGuy

Ответы [ 2 ]

1 голос
/ 27 июня 2012

Если кому-то интересно, я решил это с помощью:

<Application.Resources>

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="/ReuxablesLegacy;component/mercury.xaml" />
            <ResourceDictionary>

                <Style x:Key="MyWindowStyle" TargetType="Window">
                    <Setter Property="FontSize" Value="12" />
                    <Setter Property="FontFamily" Value="Arial" />
                    <Setter Property="Background" Value="WhiteSmoke" />
                </Style>

                <Style x:Key="MyPageStyle" TargetType="Page">
                    <Setter Property="FontSize" Value="12" />
                    <Setter Property="FontFamily" Value="Arial" />
                    <Setter Property="Background" Value="WhiteSmoke" />
                </Style>
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>

</Application.Resources>

И затем добавил

Style="{StaticResource MyWindowStyle}"

... в заголовок окна (или заменил страницу на страницы)

0 голосов
/ 24 января 2012

Измените следующее:

<Style TargetType="Window">
<Style TargetType="Page">

На

<Style TargetType="{x:Type Window}">
<Style TargetType="{x:Type Page}">
...