首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ValueConverter传递给CustomControl

将ValueConverter传递给CustomControl
EN

Stack Overflow用户
提问于 2014-10-02 15:36:41
回答 1查看 95关注 0票数 0

我被困在一个问题上,我确信这是因为我没有像我应该使用的那样使用WPF。我将试图描述我的情况,并希望有任何想法。

我即将创建一个CustomControl,它显示一个数值,并且可以显示该值的验证错误。该控件是控件库的一部分,不知道任何有关值或其验证的信息,但应将验证错误显示为工具提示。因此,我使用默认样式添加触发器:

代码语言:javascript
复制
<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

代码语言:javascript
复制
public IValueConverter LocConverter
{
    get { return (IValueConverter)GetValue(LocConverterProperty); }
    set { SetValue(LocConverterProperty, value); }
}

我试图通过绑定使用这个转换器:

代码语言:javascript
复制
<Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors).CurrentItem.ErrorContent,
                        Converter={Binding LocConverter,
                                           RelativeSource={RelativeSource AncestorType={x:Type MyControl}}}}" />

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

是否有另一种可能绑定转换器或如何将转换方法传递给控件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 15:49:10

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26164350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档