我有一个看起来像这样的课程:
class GlobalAssemblyInfo
{
public const string AssemblyName = "MyAppName";
}
该名称空间中包含 NOT 。
我尝试使用以下代码绑定到此处失败:
Text="{Binding GlobalAssemblyInfo.AssemblyName}"
这是可能的,如果是这样,我将如何实现这一目标?
在我收到关于仅使用绑定动态更改内容的任何评论之前,让我解释一下为什么我需要这个。
我正在创建一个可能需要因商标问题而重命名的应用。我需要在几个地方使用该名称,例如“MyApp Contributors”或“MyApp Help”。使用绑定可以让我只说Text="{Binding AppName, StringFormat='{}{0} Contributors'}"
。
答案 0 :(得分:1)
如果您创建了一个没有命名空间的类,为什么不在项目的Resources
或XAML
中将您的程序集名称放在Resources
中,这样您就可以进行绑定在其中StringFormat
在App.xaml.
定义类似这样的内容
<x:String x:Key="AssemblyName">Your Value</x:String>
或在项目中添加新资源文件并在那里定义。
所以你可以使用类似这样的东西
Text="{Binding Source={StaticResource AssemblyName}, Path=., StringFormat="{}}"
答案 1 :(得分:1)
这里有两个问题。首先,您在绑定中使用类的方式是将其分配给Path,因此它会在您的DataContext上查找名为GlobalAssemblyInfo的属性。您需要使用静态源,并将值作为属性而不是const公开。这使用以下形式:
{Binding Source = {x:Static ns:Class.StaticProperty}}
另一个问题是你没有命名空间来在XAML中创建你的xmlns。您应该考虑是否真的需要该类不被命名空间,但如果您这样做,您应该能够使用奇怪的构造
的xmlns:myGlobal = “CLR-名称空间:;装配=”
然后在第一个示例中使用myGlobal代替ns。