WPF не применяет стиль к первому элементу

У меня есть простое окно WPF с 12 кнопками. Я хочу, чтобы ко всем был применен один и тот же стиль. Этот код вызывает ту же ошибку:

<Window x:Class="TestApp.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TestWindow" Height="400" Width="500"
        WindowStyle="None" WindowState="Maximized">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/AllResources.xaml"/>
                <ResourceDictionary>
                    <Style TargetType="{x:Type Button}">
                        <Setter Property="FontSize" Value="100"/>
                    </Style>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Content="1" Name="Button1"/>
        <Button Grid.Column="1" Content="2" Name="Button2"/>
    </Grid>
</Window>

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

<Window x:Class="TestApp.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TestWindow" Height="400" Width="500"
        WindowStyle="None" WindowState="Maximized">
    <Window.Resources>
        <Style TargetType="{x:Type Button}">
            <Setter Property="FontSize" Value="100"/>
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Content="1" Name="Button1"/>
        <Button Grid.Column="1" Content="2" Name="Button2"/>
    </Grid>
</Window>

Он также работает, если я (вместо удаления объединенных словарей) добавляю атрибут x: Key = "key", а затем явно назначаю этот стиль каждой кнопке.

В чем проблема. Вот? Почему первый пропускает "Button1" а второй нет?

24
задан Scott M. 27 January 2011 в 00:46
поделиться