次の方法で共有


Application.Resources プロパティ

定義

スタイルやブラシなど、アプリケーション スコープ リソースのコレクションを取得または設定します。

public:
 property System::Windows::ResourceDictionary ^ Resources { System::Windows::ResourceDictionary ^ get(); void set(System::Windows::ResourceDictionary ^ value); };
public System.Windows.ResourceDictionary Resources { get; set; }
[System.Windows.Markup.Ambient]
public System.Windows.ResourceDictionary Resources { get; set; }
member this.Resources : System.Windows.ResourceDictionary with get, set
[<System.Windows.Markup.Ambient>]
member this.Resources : System.Windows.ResourceDictionary with get, set
Public Property Resources As ResourceDictionary

プロパティ値

ResourceDictionary

0 個以上のアプリケーション スコープ リソースが格納された ResourceDictionary オブジェクト。

属性

この例では、XAML をアプリケーション スコープ リソースと共に使用して、一貫した外観を作成する方法を示します。 最初の例は App.xaml です。2 つ目は MainWindow.xaml です

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml"
    >

  <Application.Resources>
    <SolidColorBrush x:Key="BackgroundColor" Color="Yellow"></SolidColorBrush>
  </Application.Resources>

</Application>
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ApplicationResourcesSnippetSample_XAML" 
    Height="300" 
    Width="300" 
    Background="{StaticResource BackgroundColor}"
    >
  <Grid>
    <!-- Additional XAML. -->
  </Grid>
</Window>

次の例は、コードと XAML (C# WPF プロジェクトの App.xaml ファイルまたは Visual Basic WPF プロジェクトの Application.xaml ファイル) でアプリケーション リソースを設定する方法を示しています。

// Set an application-scope resource
Application.Current.Resources["ApplicationScopeResource"] = Brushes.White;
' Set an application-scope resource
Application.Current.Resources("ApplicationScopeResource") = Brushes.White
<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    StartupUri="MainWindow.xaml" 
    Startup="App_Startup" 
    Exit="App_Exit">
    <Application.Resources>
        <SolidColorBrush x:Key="ApplicationScopeResource" Color="White"></SolidColorBrush>
    </Application.Resources>
</Application>

次の例は、コードでアプリケーション リソースを取得する方法を示しています。

// Get an application-scope resource
Brush whiteBrush = (Brush)Application.Current.Resources["ApplicationScopeResource"];
' Get an application-scope resource
Dim whiteBrush As Brush = CType(Application.Current.Resources("ApplicationScopeResource"), Brush)

注釈

このプロパティを Resources 使用して、アプリケーションのウィンドウと要素全体でリソースを共有できます。 さらに、 Resources このプロパティはリソース参照パスに含まれており、次の順序で走査されます。

  1. 要素

  2. Windows

  3. Application.Resources

  4. システム

そのため、ユーザー インターフェイス (UI) 要素は、アプリケーション スコープのリソースにバインドできます。 さらに、リソースが変更された場合、リソース システムは、それらのリソースにバインドされている要素プロパティが、変更を反映するように自動的に更新されるようにします。

アプリケーション スコープ リソースは、アプリケーション全体で一貫したテーマをサポートする簡単な方法を提供します。 タグを使用すると、XAML でテーマを簡単に Application.Resources 作成できます。 ただし、多数のテーマ要素を含む複数のテーマがアプリケーションでサポートされている場合は、テーマごとに 1 つの ResourceDictionary インスタンスを使用して管理する方が簡単な場合があります。 このようにして、Resources プロパティを適切な ResourceDictionaryテーマに設定することで、新しいテーマを適用できます。

Resources を使用するときに注意する点が 2 つあります。 まず、ディクショナリ キー はオブジェクトであるため、プロパティ値の設定と取得の両方でまったく同じオブジェクト インスタンスを使用する必要があります (文字列を使用する場合、キーでは大文字と小文字が区別されることに注意してください)。 次に、ディクショナリ はオブジェクトであるため、プロパティ値を取得するときに値を目的の型に変換する必要があります。

Resources はスレッド セーフであり、任意のスレッドから使用できます。

適用対象