【问题标题】:How to pass to the Converter Parameter something that is not hard coded如何将非硬编码的东西传递给转换器参数
【发布时间】:2011-09-15 12:44:47
【问题描述】:

类似:

 <TextBlock Text="{Binding Text,Converter={StaticResource
  ccc},ConverterParameter=PersonName}"/>

例如当 Person name 是类的 Property 时。

更新:

我见过一个解决方案,它告诉从 DependencyObject 继承并实现 IValueConverter。 我想知道有没有更简单的。

【问题讨论】:

  • 假设 TextBlock 绑定到 dataObject.,您的示例表明您希望 TextBlock.Text 等于 dataObject.Text 和 dataObject.PersonNametext 字段的某些功能。 dataObject 是否具有 .Text 属性?如果没有,使用{Binding PersonName...}. If so, can you pass the whole dataObject in like this: {Binding Converter={StaticResource ccc}}`?做你需要的吗?
  • @agent-j 我想要的参数来自我的窗口,而不是来自dataObject。
  • @Zahid Sattar 是正确的。 +1

标签: .net wpf binding converter


【解决方案1】:

答案是直截了当的,但不是你想听到的。

您只能针对 DependencyObject 上的 DependencyProperty 绑定。绑定不继承自 DO,所以不能绑定转换器参数。

如果您希望将其他状态传递给转换器,您可能必须对所需的对象进行子类化并添加新属性

【讨论】:

    【解决方案2】:

    您是否研究过 MultiBinding?如果您希望将两个属性发送到转换器,例如“Text”和“PersonName”,您可以执行以下操作:

    <TextBlock>
      <TextBlock.Text>
        <MultiBinding Converter="{StaticResource ccc}">
          <Binding Path="Text"/>
          <Binding Path="PersonName"/>
        </MultiBinding>
      </TextBlock.Text>
    </TextBlock>
    

    这假定“Text”和“PersonNames”是 DataContext 上的属性。如果不是这种情况,您可能需要更改绑定路径。

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 1970-01-01
      • 2011-08-07
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多