У меня есть простое окно 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», а второй нет?