我有一个由多个应用程序共享的Windows Phone页面代码。
在页面顶部,我显示了应用程序的标题,如下所示:
是否可以将文本绑定到应用程序程序集中定义的应用程序标题?
我意识到我可以通过读取程序集中的标题然后执行类似的操作来执行此操作:
this.ApplicationTitle.Text = title;
我希望程序集中定义的标题可以通过以下方式访问:
Text={assembly title}" directly from within the xaml.
由于
答案 0 :(得分:1)
创建一个名为ApplicationTitle的属性,该属性返回该应用程序的名称,如下所示,然后在XAML中绑定它:
public string ApplicationTitle
{
get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; }
}
(如果您不能或不想使用数据上下文,则可以使用相对绑定源。)
修改强>
我刚刚意识到我的方法涉及安全性因素,因为GetName是一种[安全严重]的方法。我得到一个MethodAccessException说明:尝试访问该方法失败:System.Reflection.Assembly.GetName()
所以这是获取程序集名称并使用AssemblyTitle属性将其返回到属性的另一种方法。
public string ApplicationTitle
{
get
{
System.Reflection.AssemblyTitleAttribute ata =
System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(
typeof(System.Reflection.AssemblyTitleAttribute), false)[0] as System.Reflection.AssemblyTitleAttribute;
return ata.Title;
}
}
要在XAML中绑定,您可以使用:
Text="{Binding ElementName=LayoutRoot, Path=Parent.ApplicationTitle}"