将ConverterParameter绑定到Silverlight 4中的资源文件

时间:2011-02-16 16:42:14

标签: data-binding silverlight-4.0 resourcedictionary

我正在尝试创建一个通用转换器,它将从资源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]   ---&GT; System.InvalidOperationException:由于操作无效   对象的当前状态.....

我从this StackOverflow question了解到ConverterParameter不可绑定且不是DependencyObject。除了将文本放在XAML中之外,是否有解决此问题的方法?

2 个答案:

答案 0 :(得分:1)

我找到了Brandon Truong的解决方案。这非常有效。 我将带有DependencyProperty转换器的FrameworkElement放在:

<UserControl.Resources>
    <utilConverters:myTooltipConverter x:Key="myTooltipConverter" Tooltips="{Binding Path=tooltips, Source={StaticResource resource}}" />
    </UserControl.Resources>

答案 1 :(得分:0)

我在这里得到同样的错误, **

  

  的ElementName = RadCalendarMonths,路径= SelectedDate,的StringFormat ='MMMM   yyyy',ConverterCulture = {Binding Path = CurrentCultureInfo,   Source = {StaticResource ResourceWrapper}}}“/&gt;

我使用了Converter Culture属性Binded!哎呀!我不能这样做,因为属性ConverterCulture不是DependencyProperty。如果属性不是DependencyProperty的实例,则无法对其进行绑定。

如果你看看VS2010上的Property(F4)Pane你可以看到一些属性支持绑定一些属性没有!有些属性没有在那里看到,因为有些属性只是你知道的只读。

因此,使用资源是解决问题的合理方法。