Wpf 在PriorityBinding中使用MarkupExtension
编辑:TL/DR 您可以在Wpf 在PriorityBinding中使用MarkupExtension,wpf,binding,Wpf,Binding,编辑:TL/DR 您可以在PriorityBinding中使用自定义标记扩展。它可能会突出显示一条错误消息,设计者可能不会在设计时显示它,但在运行时它会像一个符咒一样工作。似乎是XAML设计器或某些其他内部组件的问题 在我们的软件中,我有一些特定的场景,我需要显示一个翻译后的字符串,以防绑定返回null。在这里,我的产品编号只设置在某一点上,在此之前,我希望显示以用户语言翻译的“未知”。为此,我们使用了一个自定义标记,它返回一个到支持转换的中间对象的绑定 遗憾的是,MarkupExtension
PriorityBinding
中使用自定义标记扩展。它可能会突出显示一条错误消息,设计者可能不会在设计时显示它,但在运行时它会像一个符咒一样工作。似乎是XAML设计器或某些其他内部组件的问题
在我们的软件中,我有一些特定的场景,我需要显示一个翻译后的字符串,以防绑定返回null。在这里,我的产品编号只设置在某一点上,在此之前,我希望显示以用户语言翻译的“未知”。为此,我们使用了一个自定义标记,它返回一个到支持转换的中间对象的绑定
遗憾的是,MarkupExtension
被BindingBase
继承,而不是相反。因此,由于PriorityBinding
需要一个BindingBase
集合,因此我无法将翻译标记添加为回退绑定
这就是我所尝试的:
<PriorityBinding>
<Binding Path="ProductionNumber" />
<l:Translate Key="Unknown" Context="Common" />
</PriorityBinding>
有人知道如何解决这个问题吗?使用
PriorityBinding
将是最简单的方法。当然,我可以使用转换器来实现这一点,但是我会消除标记中实现的一些基本功能,这些功能基本上使它变得无用。为什么不能对TargetNullValue
属性集使用自定义Binding
实现呢?每次TargetNullValue
创建时,我都需要提供一个值用过。因此,我必须重写它,因为当使用new
实现时,基类不会使用它。因为整个绑定系统都被锁定了,所以我无法覆盖绑定的任何逻辑。。。这样,我就得到了一个静态值,当我切换语言时,它不会改变。我不会跟随。您可以只设置自定义绑定的每个实例的TargetNullValue
或任何其他属性,不是吗?不。我们的软件无需重新启动即可工作。如果我更改了语言,所有内容都会立即被翻译,这要归功于绑定。我不能只设置一次回退值,因为它类似于一次性绑定。此外,这个TranslateMarkup
是否实现了遍历逻辑树以构建上下文层次结构的逻辑(XAML中的每个元素都可以有一个上下文附加属性,该属性在标记的ProvideValue
方法中解析为完整的上下文路径)。那么,您的实际问题是什么?