通过C#设置Application.Resources

时间:2012-08-20 06:14:36

标签: c# windows-phone-7

我在我的应用程序的App.xaml文件中有这个资源。

//App.xaml
<Application.Resources>
    <sys:String x:Key="ApplicationTitle">FUEL CONSUMPTION</sys:String>
</Application.Resources>

这非常有效!但我正在尝试通过代码隐藏文件设置资源,如下所示:

// MainPage.xaml.cs#PhoneApplicationPage_Loaded event
// To get the assembly version number
var nameHelper = 
           new System.Reflection.AssemblyName
              (System.Reflection.Assembly.GetExecutingAssembly().FullName);
// To change the application title based on the assembly version 
Application.Current.Resources["ApplicationTitle"] = "FUEL CONSUMPTION - v" +
           nameHelper.Version.Major + "." + nameHelper.Version.Minor; 

但是每当我尝试分配它时,我都会被NotImplentedException抛向我。这是预期的,因为显然资源的制定者是以这种方式实现的,但有没有办法实现呢?

我希望利用这些资源轻松实现绑定。

2 个答案:

答案 0 :(得分:2)

尝试:App.Current.Resources.Add("Key",Value);

答案 1 :(得分:1)

我找到了问题的解决方案。非常感谢 Milan Aggarwal 让我加入解决方案。

解决方案是将以下代码放入Application_Launching事件处理程序。

var nameHelper = new System.Reflection.AssemblyName
    (System.Reflection.Assembly.GetExecutingAssembly().FullName);

if (Application.Current.Resources.Contains("ApplicationTitle")) 
    Application.Current.Resources.Remove("ApplicationTitle");

Application.Current.Resources.Add("ApplicationTitle", 
    "FUEL CONSUMPTION - v" + nameHelper.Version.Major + "." +
    nameHelper.Version.Minor);

如果绑定对象已更新,则应用程序标题不会更新。资源的更改必须在创建PhoneApplicationPage对象之前发生。