Привязка ConverterParameter к файлу ресурса в Silverlight 4 - PullRequest
2 голосов
/ 16 февраля 2011

Я пытаюсь создать общий конвертер, который будет принимать строку из файла resx-ресурса (приложение должно быть локализуемым) в качестве параметра.

<TextBlock
    ToolTipService.ToolTip="{Binding IsInUse, ConverterParameter={Binding Path=WhereUsedIndicatorTooltips, Source={StaticResource resource}}, Converter={StaticResource whereUsedIndicatorTooltipConverter}}" />

Где ресурс объявлен вверху этой страницы в XAML как:

<UserControl.Resources>
  <resources:myResource x:Key="resource" />
</UserControl.Resources>

Во время выполнения я получаю это исключение:

System.Windows.Markup.XamlParseException: Укажите значение на 'System.Windows.Data.Binding' бросил исключение. [Линия: 47 Позиция: 42] ---> System.InvalidOperationException: операция недопустима из-за текущее состояние объекта .....

Я знаю из этого вопроса StackOverflow , что ConverterParameter не является привязываемым и не является DependencyObject. Есть ли обходной путь к этой проблеме, помимо помещения текста в XAML?

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Я нашел решение от Брэндон Труонг .Это работает очень хорошо.Я поместил свой FrameworkElement с конвертером DependencyProperty в:

<UserControl.Resources>
    <utilConverters:myTooltipConverter x:Key="myTooltipConverter" Tooltips="{Binding Path=tooltips, Source={StaticResource resource}}" />
    </UserControl.Resources>
0 голосов
/ 12 января 2012

Здесь я получил ту же ошибку, **

ElementName = RadCalendarMonths, Path = SelectedDate, StringFormat = 'MMMM yyyy', ConverterCulture = {Путь привязки = CurrentCultureInfo, Source = {StaticResource ResourceWrapper}}} "/>

Я использовал свойство Converter Culture Binded! Opps! Я не могу этого сделать, потому что свойство ConverterCulture не является DependencyProperty. Если свойство не является экземпляром DependencyProperty, вы не можете использовать привязку наit.

Если вы посмотрите на панель Property (F4) на VS2010, вы увидите, что некоторые свойства поддерживают Binding, некоторые свойства этого не делают! Некоторые свойства там не видны, поскольку некоторые свойства доступны только для чтения, как вы знаете.

Таким образом, использование ресурса - логичный способ его решения.

...