12個のボタンがある単純なWPFウィンドウがあります。私はそれらのすべてに同じスタイルを適用したい。このコードは、同じエラーを生成します。WPFは最初の要素にスタイルを適用しません
<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>
最初のボタンがそれに適用されるスタイルを取得していないが、2番目の1が行います。私はキーを設定し、すべてのボタンでそれを使用することができますが、私は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を追加する場合にも動作します。
ここで問題は何ですか?なぜ、最初のものは "Button1"をスキップし、2番目のものはスキップしないのですか?
何the--?あなたが正しい!私は以前これを見たことがない。再現性の良いコードサンプルを+1してください。 –
WPFのバグのように聞こえます。私は実際には単一エントリのリソース辞書に問題があったことを覚えています。スタイルを含むリソース辞書にもう1つ(ダミー)アイテムを追加してみてください。 (私は今コンパイラを持っていません。) – Vlad
2つのボタンがあり、それぞれにスタックパネルと2つのラベルが付いているとき、同じ問題がありました。最初のラベルはスタイリングを得ることはできませんでしたが、他の3つはスタイルになります。誰かがバグレポートを提出する方法を知っていますか? –