在MultiBinding中使用另一个元素的ItemsSource属性

时间:2013-07-18 21:06:40

标签: c# wpf xaml binding itemssource

我想将特定元素的ItemsSource属性用作另一个元素MultiBinding中的绑定之一。这是我到目前为止所做的:

<Label>
  <Label.Content>
    <MultiBinding Converter="{converters:myMultiValueConverter}">
      <Binding Path="PageIndex" />
      <Binding ElementName="anotherElement" Path="ItemsSource"/>
    </MultiBinding>
  </Label.Content> 
</Label>

这个工作一次(最初设置ItemsSource时),但是当绑定到原始元素的ObservableCollection属性的ItemsSource添加或删除了项时,绑定无法更新。这种约束是否可能?

1 个答案:

答案 0 :(得分:5)

添加虚拟绑定( - 您不需要值 - ),以强制重新评估MultiBinding

<Binding ElementName="anotherElement" Path="ItemsSource.Count"/>

编辑:注意到一个缺陷:如果您移动了不会注册的项目,如果这不会改变中间的Count属性,那么这可能与您相关。在这种情况下,你可以绑定到你自己的假人,你可以在CollectionChanged上发出更改通知(但在任何情况下都不是那么干净)。

您可能需要考虑HighCore的建议,即get - 仅属性,它返回您在其所依赖的所有位置手动触发PropertyChanged的计算值通常非常方便。