Привязка как отформатированная строка - PullRequest
1 голос
/ 22 июля 2011

У меня есть ListBox, который содержит набор объектов (связанных через ItemsSource привязка к ObservableCollection).Я еще не использовал динамическое связывание.В настоящее время используется метод ToString() объекта.Метод ToString () показывает строку следующим образом: name (someOtherProperty)

Однако , даже если реализован INotifyPropertyChanged и что я использую ObservableCollection , , если я изменяю свойство элементаэта строка не будет обновлена ​​.

Я полагаю, что это потому, что она вызывает ToString только один раз.вместо этого я предполагаю, что должен использовать привязку данных, но как я могу сформировать такую ​​строку с ним?<< имя (someOtherProperty) >>

Спасибо.

1 Ответ

3 голосов
/ 22 июля 2011

Вы можете использовать мультисвязывание, например, как то так:

<MultiBinding StringFormat="{}{0} ({1})">
    <Binding Path="name"/>
    <Binding Path="someOtherProperty"/>
</MultiBinding>

Если вы просто дадите ему выполнить ToString, то никакого надлежащего связывания вообще не будет, любые уведомления не будут иметь никакого эффекта.

Вы используете это так:

<ListBox ...>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <TextBlock.Text>
                    <!-- The above binding here -->
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
...