在 XAML 中我这样做:
<Button Style="{StaticResource NavigationBackButtonNormalStyle}" />
如何在代码隐藏中做同样的事情?
页面级Resources对象能够查找本地、应用级、静态和主题资源。这意味着您只需执行以下操作:
foo2.Style = this.Resources["NavigationBackButtonNormalStyle"] as Style;
祝你好运!
试试这个
Application.Current.Resources["key"]
这是一个可以使用的通用帮助器类。走这条路线的优点是,您将能够使用相同的帮助器来获取其他类型的资源(例如画笔或数据模板)
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");
如果您在 ViewModel 中工作,您将无法使用上面的答案。
要更新 Eternal21 的答案,您可以这样:
public static T Get<T>(string resourceName)
{
try
{
var success = Application.Current.Resources.TryGetValue(resourceName, out var outValue);
if(success && outValue is T)
{
return (T)outValue;
}
else
{
return default(T);
}
}
catch
{
return default(T);
}
}
注意这里缺少 where 子句。我不想将它限制为类,所以我也可以将它与 Color 一起使用,它是一个结构......所以删除了它。