StringFormat в silverlight Xaml и ресурсах - PullRequest
6 голосов
/ 26 октября 2010

У меня есть строки формата в моих файлах ресурсов.Я пытаюсь получить доступ к ним из атрибута Text TextBlock, используя FormatString

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 ]

8 голосов
/ 27 октября 2010

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 голос
/ 27 октября 2010

Ваш синтаксис неправильный для использования StringFormat, и вы можете захотеть что-то отличное от StringFormat. StringFormat используется для управления выводом того, что назначено для пути привязки. В вашем примере вы привязываетесь к свойству Project.Name.

StringFormat следует использовать для достижения эффекта, аналогичного использованию String.Format в коде. См. Эту ссылку для форматирования: http://msdn.microsoft.com/en-us/library/26etazsy(v=VS.95).aspx

Другие ответы по этой теме:

Поддерживает ли Silverlight StringFormat при связывании?

http://blog.davemdavis.net/2009/12/03/silverlight-4-data-binding-string-format/

Вот пример кода использования StringFormat:

<TextBlock Text="{Binding Path=Cost, StringFormat=\{0:c\}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...