2

プログラム コントロールのすべてのカスタム スタイルを含むリソース ディクショナリがあります。次に示すように、ディクショナリはアプリケーションのリソースとマージされます。

    <ResourceDictionary x:Key="Controls">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Controls.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

xaml を介してさまざまなスタイルに簡単にアクセスできます。

<Button Style="{StaticResource Button}" />

しかし、コードを使用してこのスタイルのコントロールを割り当てようとすると、失敗します。

私はもう試した:

    Button.Style = Application.Current.Resources("Button")

    Button.Style = CType(Application.Current.Resources("Button"), Style)

そして、上記のものと同様のさまざまなアプローチ。スタイルを取得するさまざまな方法をいくつかテストしているときに、「リソースが見つかりません」というメッセージが表示されましたが、上記の方法を使用すると、プログラムはスタイルを見つけたように見えました。プログラムを正常に実行できましたが、スタイルが実際に適用されたという視覚的な証拠はありませんでした。

リソース ディクショナリで見つかったスタイルをコントロールに適切に割り当てるにはどうすればよいですか?

4

2 に答える 2

5

任意の子孫の場合: コードを使用して、リソースから動的に作成されたコントロールにスタイルを適用することに成功した方法を次に示します。(スタイルを含むリソース ディクショナリがある場合)

最初のステップ: リソース ディクショナリを含める

リソース ディクショナリにコードから簡単にアクセスできるようにするには、コードを介してリソース ディクショナリを追加します。

VB

  Dim myResourceDictionary As New ResourceDictionary
  myResourceDictionary .Source = New _
  Uri("/YourApplication;component/YourDictionary.xaml",
        UriKind.RelativeOrAbsolute)

C#

   var myResourceDictionary = new ResourceDictionary
       {
           Source = new Uri("/YourApplication;component/YourDictionary.xaml", UriKind.RelativeOrAbsolute)
       };

"YourApplication" をソリューション名に置き換え、"YourDictionary" をリソース ディクショナリ ファイルに置き換えます。

2 番目のステップ: スタイルを割り当てる

新しくインポートされたリソース ディクショナリを利用するには、コントロールにスタイルを割り当てるだけです。

VB

  Dim myButton As New Button
  Dim myButtonStyle As Style = myResourceDictionary("YourStyleKey")
  myButton.Style = myButtonStyle

C#

  var myButtonStyle= myResourceDictionary["YourStyleKey"] as Style;
  var myButton = new Button { Style = myButtonStyle };

これに関する記事を提供してくれたユーザーStefan Denchevに特に感謝します。C# は私の得意分野ではないので、間違いがあれば編集してください。

于 2013-09-16T13:56:36.227 に答える
5

Application.Current.Resources["Button"] を使用します。

于 2013-09-16T05:39:40.903 に答える