0

我正在尝试将数据绑定到这样的列表框:

<ListBox x:Name="MyListBox" Margin="0,0,0,65">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource MyConverter}}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我绑定到整个对象而不是属性的原因是因为我的转换器需要对象的多个属性来构建它返回的字符串。

这有效,我的字符串被返回。但是当我更改基于该值的 ObservableCollection 时,屏幕上的值不会改变。如果我只绑定到一个属性并更改它,那么值确实会更改。

我能做些什么不同的事情?我无法绑定到单个属性,因为我需要转换器中的整个对象......并且 ConverterParameter 已经被使用。

4

2 回答 2

4

请记住,如果您绑定到“主”属性并且主属性本身的值没有更改,则绑定将没有理由刷新自身。它不知道您的转换器实际上是基于子属性的。您可以做的是使用MultiBinding,您不仅可以绑定“主”属性,还可以绑定特定的子属性。这使您的IMultiValueConverter实现可以访问主数据对象,但由于您还绑定到正在更改的子属性,因此当该子属性的值更改时也会刷新。

于 2009-10-21T20:16:51.853 回答
1

您可以尝试使用MultiBinding,我相信只要触发它的任何绑定就会更新。您还可以使用IMultiValueConverter或仅利用绑定的 StringFormat。

于 2009-10-21T20:18:24.047 回答