2014-10-02 49 views
0

我卡上的问题,我敢肯定这事,因为我没有使用WPF我应该。我会尽力描述我的情况,并会很感激任何想法。通ValueConverter到CustomControl

我要创建一个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}}}}" /> 

但这导致运行错误,因为我不能使用的绑定转换器。

是否有绑定一个转换器或一个想法,如何通过翻译的方法来控制另一种可能性?

回答

1

通常,应用依赖于可能独立更改的两个或多个值(在本例中为您的错误内容和转换器)的绑定的最佳方式是使用MultiBinding。你可以写一个接受错误内容作为其第一个值和转换器作为其第二值自定义IMultiValueConverter,然后使用提供的转换器来执行实际的转换。该MultiBinding将被重新评估时,无论是错误内容或LocConverter变化。

+0

就是这样,感谢配发! – MatthiasG 2014-10-02 15:54:47