WPF привязка данных и конвертеры - PullRequest
0 голосов
/ 22 октября 2009

Я пытаюсь привязать данные к списку примерно так:

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

Причина, по которой я связываюсь со всем объектом, а не со свойством, заключается в том, что моему преобразователю потребуются несколько свойств объекта для построения возвращаемой строки.

Это работает, и моя строка возвращается. Но затем, когда я изменяю ObservableCollection, это основано на значении, не изменяется на экране. Если я связываю только одно свойство и изменяю его, значение меняется.

Что я могу сделать по-другому? Я не могу привязать ни к одному свойству, так как мне нужен весь объект в конвертере ... И ConverterParameter уже используется.

Ответы [ 2 ]

4 голосов
/ 22 октября 2009

Помните, что если вы связываетесь со свойством "main" и значение самого свойства main не изменяется, то привязка не будет иметь оснований для обновления сама. Он не имеет ни малейшего представления, что ваш конвертер на самом деле основан на дополнительном свойстве. То, что вы можете сделать, это использовать MultiBinding , где вы привязываете не только свойство «main», но и определенное под-свойство. Это дает вашей реализации IMultiValueConverter доступ к основному объекту данных, но поскольку вы также привязываетесь к изменяющемуся под-свойству, оно также будет обновляться при изменении значения этого под-свойства.

1 голос
/ 22 октября 2009

Вы можете попробовать использовать MultiBinding , который, я считаю, обновляется всякий раз, когда срабатывает любая из его привязок. Вы также можете использовать IMultiValueConverter или просто использовать StringFormat привязки.

...