我被困在一个问题上,我确信这是因为我没有像我应该使用的那样使用WPF。我将试图描述我的情况,并希望有任何想法。
我即将创建一个CustomControl,它显示一个数值,并且可以显示该值的验证错误。该控件是控件库的一部分,不知道任何有关值或其验证的信息,但应将验证错误显示为工具提示。因此,我使用默认样式添加触发器:
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors).CurrentItem.ErrorContent}" />
</Trigger>
</Style.Triggers>我现在要做的是给控件的用户在转换器的帮助下翻译验证错误的可能性。因此,我向自定义控件添加了一个DependencyProperty:
public IValueConverter LocConverter
{
get { return (IValueConverter)GetValue(LocConverterProperty); }
set { SetValue(LocConverterProperty, value); }
}我试图通过绑定使用这个转换器:
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors).CurrentItem.ErrorContent,
Converter={Binding LocConverter,
RelativeSource={RelativeSource AncestorType={x:Type MyControl}}}}" />但这会导致运行时错误,因为我不能为转换器使用绑定。
是否有另一种可能绑定转换器或如何将转换方法传递给控件?
发布于 2014-10-02 15:49:10
通常,应用依赖于可能独立更改的两个或多个值(在本例中,错误内容和转换器)的绑定的最佳方法是使用MultiBinding。您可以编写一个自定义IMultiValueConverter,它接受错误内容作为第一个值,转换器作为第二个值,然后使用提供的转换器执行实际转换。当错误内容或MultiBinding更改时,将重新评估LocConverter。
https://stackoverflow.com/questions/26164350
复制相似问题