0

すべてのウィンドウのウィンドウタイプのスタイルを上書きするスタイルをWPFアプリケーションで作成する方法はありますか?

すなわち;

<Style x:Key="{x:Type Window}"
   TargetType="{x:Type Window}" >
    <Setter Property="Background" Value="Black" />
</Style>

App.xamlまたはApp.xamlで参照されるリソースディクショナリ。

4

1 に答える 1

1

簡単な答えは:それは不可能です。

説明同様の質問がたくさんあります。 実行時にWPFウィンドウスタイルが機能し
ないWPFウィンドウスタイルが適用されていない
app.xamlでデフォルトのWPFウィンドウスタイルを設定するにはどうすればよいですか。

StylesのTargetTypeは、派生型を管理しません。

Windowクラスを作成するのではなく、それから派生したクラスを作成します。Windowクラスのインスタンスを作成した場合は、スタイルが適用されている必要があります。

Dim frm As New Window
frm.Show()

ただし、(少なくとも4.0では)機能せず、Application.xamlのスタイルは実行時に適用されません。回避策は次のとおりです。

実行時にリソースディクショナリをロードします。

Dim app As Application = New Application()
Application.Current.Resources.MergedDictionaries.Add(Application.LoadComponent(New Uri("/MyProject;component/MainDictionary.xaml", UriKind.Relative)))

実行時にスタイルを作成する

Sub Main()
 Dim app As Application = New Application()
 Dim sty As Style
 sty = New Style With {.TargetType = GetType(Window)}
 sty.Setters.Add(New Setter With {.Property = Control.BackgroundProperty, .Value = Brushes.Red})
 Application.Current.Resources.Add(GetType(Window), sty)
 Dim frm As New Window
 frm.ShowDialog()
End Sub

そして、ウィンドウには希望の背景があります。これはバグだと思います。

于 2012-04-05T09:10:21.970 に答える