我正在尝试创建一个通用转换器,它将从资源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中之外,是否有解决此问题的方法?
答案 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你可以看到一些属性支持绑定一些属性没有!有些属性没有在那里看到,因为有些属性只是你知道的只读。
因此,使用资源是解决问题的合理方法。