0

私はこれが以前に尋ねられたとは思わないので、もしそうなら私をリダイレクトしてください。私はWPFを初めて使用しますが、考えられるすべてのことを試しましたが、成功しませんでした。行き詰まりました。

WPFテーマを使用していますが、作成したカスタムスタイルをいくつか追加したいと思います。たとえば、すべてTextBlockの前景を持つことになっていますが、私はTextBlockで欲しいグループを持っています。

これまで、xamlでこれを実行<Style></Style>し、リソースでを作成し、を使用して呼び出してきましStyle="{StaticResource StyleName}"た。しかし、代わりにテーマファイルに追加したいので、名前を付けてxamlから呼び出す方法がわかりません。

私はこのようなものから始めると思いますが、どうすれば両方の要素をリンクできますか?

テーマファイル(MyStyles.xamlまたはTextEdit.xamlなど):

<Style TargetType="{x:Type TextBlock}" x:Key="KeyName" ???>
      <Setter Property="Foreground" Value="Blue" />
</Style>

そして、私のxamlで:

<TextBlock Name="TextBlockName"
      Style="{???}">
</TextBlock>

プログラムではユーザーがテーマを変更できるため、このスタイルをテーマに含める必要があります。これらのスタイルをxamlにハードコーディングすることはできません。

4

2 に答える 2

1

テーマファイルをロードした場合は、ローカルのスタイル/リソースと同じ方法で任意のスタイル/リソースにアクセスできます。

使用する場合Style="{StaticResource StyleName}"は最初にWindow/UserControlを検索し、見つからない場合はロードされたリソースディクショナリを検索します。テーマ(リソースディクショナリ)をロードしている限り、正常に機能します。

于 2013-02-12T21:16:43.180 に答える
1

最初にそのリソースファイルをリソースにマージします。

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MyStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <dxc:IntToBooleanConverter x:Key="IntToBooleanConverter" />
        (...)
    </ResourceDictionary>
</UserControl.Resources>

そして、あなたはそれをで使うことができます

<TextBlock Name="TextBlockName" Style="{StaticResource KeyName}" />
于 2013-02-12T21:22:53.103 に答える