我的资源文件中有格式字符串。我试图使用FormatString
从TextBlock的Text属性访问这些Text="{Binding Path=Project.Name, StringFormat={Binding Path=WkStrings.DisplayProjectName, Source={StaticResource ResourceWrapper}}}"
我收到以下错误:
Provide value on 'System.Windows.Data.Binding' threw an exception
错误指向Text =。
是否可以从“嵌套绑定”访问资源?
答案 0 :(得分:8)
Binding.StringFormat不是依赖项属性,因此您无法设置对此属性的绑定。如果要为该属性赋值,则值必须是静态资源,如下所示:
<TextBlock Text="{Binding ProjectName, StringFormat={StaticResource ProjectNameFormat}}"/>
您应该声明您的资源:
<UserControl.Resources>
<System:String x:Key="ProjectNameFormat">Project: {0}</System:String>
</UserControl.Resources>
最终结果如下:
答案 1 :(得分:1)
使用StringFormat的语法错误,您可能需要StringFormat之外的其他内容。 StringFormat用于处理分配给绑定路径的输出。在您的示例中,您将绑定到Project.Name属性。
StringFormat应该用于实现与在代码中使用String.Format类似的效果。有关格式的信息,请参阅此参考:http://msdn.microsoft.com/en-us/library/26etazsy(v=VS.95).aspx
围绕此主题的其他答案:
Does Silverlight support StringFormat in binding?
http://blog.davemdavis.net/2009/12/03/silverlight-4-data-binding-string-format/
以下是使用StringFormat的一些示例代码:
<TextBlock Text="{Binding Path=Cost, StringFormat=\{0:c\}}" />