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