Silverlight Xaml和资源中的StringFormat

时间:2010-10-26 15:41:00

标签: xaml binding silverlight-4.0

我的资源文件中有格式字符串。我试图使用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 =。

是否可以从“嵌套绑定”访问资源?

2 个答案:

答案 0 :(得分:8)

Binding.StringFormat不是依赖项属性,因此您无法设置对此属性的绑定。如果要为该属性赋值,则值必须是静态资源,如下所示:

<TextBlock Text="{Binding ProjectName, StringFormat={StaticResource ProjectNameFormat}}"/>

您应该声明您的资源:

<UserControl.Resources>
    <System:String x:Key="ProjectNameFormat">Project: {0}</System:String>
</UserControl.Resources>

最终结果如下:

Resource String Format

答案 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\}}" />