【问题标题】:How is a markup extension method applied to a binding value in XAML?标记扩展方法如何应用于 XAML 中的绑定值?
【发布时间】:2013-01-25 13:50:57
【问题描述】:

我有一个字符串的本地化标记扩展方法,我可以通过这种方式应用它:

<TextBlock Text="{l:Translate 'My string'}" />

如何将此标记扩展方法应用于绑定结果? IE。类似的东西:

<TextBlock Text="{l:Translate '{Binding Path=myStringParameter}'}" />

【问题讨论】:

  • 不能用转换器吗?或者您可以使用 MarkupExtension
  • 不,因为 Translate 方法做了更多的事情,而不仅仅是替换字符串。啊,我才发现我打错了,是标记扩展,不是字符串扩展。

标签: wpf xaml binding markup-extensions


【解决方案1】:

使用标记扩展只需这样做:

{l:Translate {Binding Path=myStringParameter}}

XAML 解析器将自行处理内部标记扩展。就像在经典 WPF 中一样:{StaticResource {x:Type Button}}

【讨论】:

  • 啊,我的问题在于标记扩展:它的构造函数接受一个字符串并且没有绑定。感谢您的提示。
  • 获取绑定后,获取值并不容易。在此处查看进一步的程序:stackoverflow.com/questions/985902/…
【解决方案2】:

我相信你这样做是不可能的,但你可以重写如下:

 <TextBlock>
     <TextBlock.Text>
        <l:Translate>
           <Binding Path="myStringParameter" />
        </l:Translate>
     </TextBlock.Text>
 </TextBlock>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2017-04-22
    • 2012-02-01
    • 2016-08-13
    • 2011-03-11
    • 2017-12-20
    相关资源
    最近更新 更多