Mam proste okno WPF, które ma 12 przycisków na nim. Chcę, aby ten sam styl był stosowany do nich wszystkich. Ten kod powoduje ten sam błąd:WPF nie stosuje stylu do pierwszego elementu
<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>
Pierwszy przycisk nie powoduje zastosowania stylu, ale drugi robi. I could ustawić klucz i używać go na każdym przycisku, ale wolałbym, aby WPF obsługiwać to dla mnie. Właśnie dowiedziałem się, pisząc to, że gdy nie uwzględniam zewnętrznego ResourceDictionary, działa zgodnie z oczekiwaniami. Będzie to problemem w przyszłości, ponieważ moja aplikacja rozszerzy się, ponieważ mam wiele okien, które muszą współdzielić te same zasoby. Zmodyfikowany kod wygląda następująco:
<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>
Działa również gdybym (zamiast usuwania scalone słowników) dodać x: Key = „klucz” atrybut, a następnie jawnie przypisać ten styl do każdego przycisku.
Na czym polega problem? Dlaczego pierwszy pomija "Button1", a drugi nie?
Co the--? Masz rację! Nigdy wcześniej tego nie widziałem. +1 dla ładnej reprodukcyjnej próbki kodu. –
Brzmi jak błąd w WPF. Pamiętam, że w rzeczywistości istniał problem z słownikami zasobów z jednym wejściem. Czy mógłbyś spróbować dodać jeszcze jeden (manekin) przedmiot do słownika zasobów, który zawiera ten styl? (Nie mam teraz kompilatora.) – Vlad
Miałem ten sam problem, gdy miałem dwa przyciski, każdy z panelem kominowym i 2 etykietami wewnątrz. pierwsza etykieta nie dostałaby stylizacji, ale pozostałe 3 by. darn Błędy WPF ... Ktoś wie, jak mogę zgłosić błąd? –