XAMLでは、次のようにします。
<Button Style="{StaticResource NavigationBackButtonNormalStyle}" />
コードビハインドで同じことを行うにはどうすればよいですか?
ページレベルのResourcesオブジェクトには、ローカル、アプリレベル、静的、およびテーマのリソースを検索する機能があります。これは、単にこれを行うことを意味します。
foo2.Style = this.Resources["NavigationBackButtonNormalStyle"] as Style;
頑張ってください!
設計時に、_Resources[key]
_を使用して「システムリソース」を解決しようとすると、リソースが見つからず、null
が返されるようです。たとえば、Resources[typeof(TextBox)]
を使用してStyle
のベースTextBox
を取得するには、null
が返されます。
代わりに、TryFindResource(key)
を使用します。これは、最初に_Resources[key]
_を試行し、次に「システムリソース」を検索して、探しているものを返すためです( [〜 #〜] msdn [〜#〜] および 参照ソース )。
言い換えれば、代わりにこれを試してください:
_var style = Application.Current.TryFindResource(key) as Style;
_
使用できる汎用ヘルパークラスは次のとおりです。このルートを使用する利点は、同じヘルパーを使用して他のタイプのリソース(BrushesやDataTemplateなど)を取得できることです。
public static class Helper
{
public static T Get<T>(string resourceName) where T : class
{
return Application.Current.TryFindResource(resourceName) as T;
}
}
そして、コードでどのように使用するか:
yourButton.Style = Helper.Get<Style>("NavigationBackButtonNormalStyle");
そして、あなたが使用するブラシリソースを取得したい場合
ItemTemplate = Helper.Get<DataTemplate>("MyDataTemplate");