ResourceContext クラス

定義

リソースの選択に影響を与える可能性があるすべての要因 (ResourceQualifier) をカプセル化します。

public ref class ResourceContext sealed
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ResourceContext final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ResourceContext final
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ResourceContext
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ResourceContext
function ResourceContext()
Public NotInheritable Class ResourceContext
継承
Object IInspectable ResourceContext
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

この例は、 アプリケーション リソースとローカライズ サンプルのシナリオ 10 に基づいています。 完全なソリューションについては、サンプルを参照してください。

private void Scenario10Button_Show_Click(object sender, RoutedEventArgs e)
{
    Button b = sender as Button;
    if (b != null)
    {
        // Use a cloned context for this scenario so that qualifier values set
        // in this scenario don't impact behavior in other scenarios that
        // use a default context for the view (crossover effects between
        // the scenarios will not be expected).
        var context = ResourceContext.GetForCurrentView().Clone();

        var selectedLanguage = Scenario10ComboBox_Language.SelectedValue;
        var selectedScale = Scenario10ComboBox_Scale.SelectedValue;
        var selectedContrast = Scenario10ComboBox_Contrast.SelectedValue;
        var selectedHomeRegion = Scenario10ComboBox_HomeRegion.SelectedValue;

        if (selectedLanguage != null)
        {
            context.QualifierValues["language"] = selectedLanguage.ToString();
        }
        if (selectedScale != null)
        {
            context.QualifierValues["scale"] = selectedScale.ToString();
        }
        if (selectedContrast != null)
        {
            context.QualifierValues["contrast"] = selectedContrast.ToString();
        }
        if (selectedHomeRegion != null)
        {
            context.QualifierValues["homeregion"] = selectedHomeRegion.ToString();
        }
        Scenario10_SearchMultipleResourceIds(context, new string[] { "LanguageOnly", "ScaleOnly", "ContrastOnly", "HomeRegionOnly", "MultiDimensional" });
    }
}

void Scenario10_SearchMultipleResourceIds(ResourceContext context, string[] resourceIds)
{
    this.Scenario10TextBlock.Text = "";
    var dimensionMap = ResourceManager.Current.MainResourceMap.GetSubtree("dimensions");

    foreach (var id in resourceIds)
    {
        NamedResource namedResource;
        if (dimensionMap.TryGetValue(id, out namedResource))
        {
            var resourceCandidates = namedResource.ResolveAll(context);
            Scenario10_ShowCandidates(id, resourceCandidates);
        }
    }
}

void Scenario10_ShowCandidates(string resourceId, IReadOnlyList<ResourceCandidate> resourceCandidates)
{
    // Print 'resourceId', 'found value', 'qualifer info', 'matching condition'
    string outText = "resourceId: dimensions\\" + resourceId + "\r\n";
    int i = 0;
    foreach (var candidate in resourceCandidates)
    {
        var value = candidate.ValueAsString;
        outText += "    Candidate " + i.ToString() + ":" + value + "\r\n";
        int j = 0;
        foreach (var qualifier in candidate.Qualifiers)
        {
            var qualifierName = qualifier.QualifierName;
            var qualifierValue = qualifier.QualifierValue;
            outText += "        Qualifer: " + qualifierName + ": " + qualifierValue + "\r\n";
            outText += "        Matching: IsMatch (" + qualifier.IsMatch.ToString() + ")  " + "IsDefault (" + qualifier.IsDefault.ToString() + ")" + "\r\n";
            j++;
        }
        i++;
    }

    this.Scenario10TextBlock.Text += outText + "\r\n";
}

注釈

リソースはスケーリングの影響を受ける可能性があり、アプリが所有するさまざまなビューを異なるディスプレイ デバイスに同時に表示でき、異なるスケールを使用する可能性があります。 そのため、ResourceContext は一般に特定のビューに関連付けられているため、 GetForCurrentView を使用して取得する必要があります。 (ビューに依存しない ResourceContextGetForViewIndependentUse を使用して取得できますが、ビューに関連付けられていない ResourceContext で呼び出された場合、スケールに依存する機能は失敗します)。

コンストラクターを使用して ResourceContext のインスタンスを作成しないでください。これは非推奨であり、今後のリリースでは削除される可能性があるためです。

特に明記されていない限り、このクラスのメソッドは任意のスレッドで呼び出すことができます。

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
1903 18362 GetForUIContext

コンストラクター

ResourceContext()

複製された ResourceContext オブジェクトを作成します。

注意

resourceContext コンストラクターは、Windows 8.1後にリリースで変更されたり、使用不能になったりする可能性があります。 代わりに、 GetForCurrentView と Clone を使用 します

プロパティ

Languages

このコンテキストの言語修飾子を取得または設定します。

QualifierValues

名前でインデックス付けされた、サポートされているすべての修飾子の書き込み可能で監視可能なマップを取得します。

メソッド

Clone()

同じ修飾子を使用して、この ResourceContext の複製を作成します。

CreateMatchingContext(IIterable<ResourceQualifier>)

指定された修飾子のセットと一致する新しい ResourceContext を作成します。

注意

CreateMatchingContext は、Windows 8.1後にリリースで変更されたり、使用できなくなったりする可能性があります。 代わりに、 ResourceContext.GetForCurrentView.OverrideToMatch を使用します。

GetForCurrentView()

現在実行中のアプリケーションの現在のビューに関連付けられている既定の ResourceContext を取得します。

GetForUIContext(UIContext)

現在実行中のアプリケーションの指定した UIContext に関連付けられている既定の ResourceContext を取得します。

GetForViewIndependentUse()

ビューに関連付けられていない既定 の ResourceContext を 取得します。

OverrideToMatch(IIterable<ResourceQualifier>)

解決された ResourceQualifierの指定されたリストと一致するように、このコンテキストによって指定された修飾子値をオーバーライドします。 通常、解決された ResourceQualifierは、以前に検索されたリソースに関連付けられます。

Reset()

指定された ResourceContext インスタンスのすべての修飾子のオーバーライドされた値をリセットします。

Reset(IIterable<String>)

指定された ResourceContext インスタンスの指定した修飾子のオーバーライドされた値をリセットします。

ResetGlobalQualifierValues()

アプリ全体のすべてのビューの既定のコンテキストから修飾子のオーバーライドを削除します。

ResetGlobalQualifierValues(IIterable<String>)

アプリ全体のすべてのビューの既定のコンテキストから、指定した修飾子の修飾子のオーバーライドを削除します。

SetGlobalQualifierValue(String, String)

現在のアプリのすべてのビューの既定のコンテキストに 1 つの修飾子値のオーバーライドを適用します。

SetGlobalQualifierValue(String, String, ResourceQualifierPersistence)

現在のアプリのすべてのビューの既定のコンテキストに単一の修飾子値のオーバーライドを適用し、オーバーライドの永続化を指定します。

適用対象

こちらもご覧ください