Привязка нескольких источников к списку - PullRequest
0 голосов
/ 12 февраля 2012

Я использую список для привязки списка в моем приложении.Но мне нужно добавить дополнительное поле, которого нет в связанном объекте.Я не понимаю, как это сделать.Любая идея, пожалуйста?

Мой код:

ObservableCollection<LatestItemsInfo> lstLatestItem;
lstBoxLatestItems.ItemsSource = lstLatestItem;

CurrencyInfo info = new CurrencyInfo();
        info.CurrencySymbol = "$";

Мне нужно добавить этот текущий символ в мой список:

Мой список выглядит так:

<ListBox Name="lstBoxLatestItems">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" VerticalAlignment="Center">
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                            <StackPanel Height="160" Width="160" Margin="0">
                                <Image Height="150" Width="150" ImageFailed="Image_ImageFailed" Stretch="Uniform" Source="{Binding ImagePath}"/>
                            </StackPanel>
                            <StackPanel Orientation="Vertical" Height="160" Margin="10" Width="300">

                                <StackPanel Orientation="Horizontal" Height="40" VerticalAlignment="Center">

                                    <TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal" DataContext="{Binding info}">
                                    <TextBlock TextDecorations="Underline" Text="{Binding CurrencySymbol}" TextWrapping="Wrap" VerticalAlignment="Center"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal" Height="40" VerticalAlignment="Center">

                                    <TextBlock TextDecorations="Underline" Text="{Binding ListPrice}"  VerticalAlignment="Center"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal" Height="40" VerticalAlignment="Center">

                                    <TextBlock Text="{Binding Price}" VerticalAlignment="Center"/>
                                </StackPanel>
                            </StackPanel>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Какая логика определяет, какой символ валюты должен отображаться? Есть ли для этого сложная логика? Не зная ничего об этой логике, я могу попытаться предложить решение.

Есть два основных способа сделать это.

  1. Оберните каждый объект в коллекции, к которому вы привязываете, в другой объект, который добавляет свойство. Объект-оболочка может наследоваться от «базового» объекта и просто добавить свойство.

  2. Используйте преобразователь значения. Передайте весь объект (или просто свойство, в зависимости от того, что требуется логикой, которая определяет символ валюты для отображения). Верните правильный символ валюты из конвертера значений.

Надеюсь, это поможет ...

Крис Андерсон

0 голосов
/ 12 февраля 2012

Либо перейдите с конвертером, как предложено Крисом Андерсоном, либо сделайте что-то вроде следующего

<TextBlock>
    <Run Text="{Binding CurrencySymbol}" />
    <Run Text="{Binding Price}" />
</TextBlock>

Обратите внимание, что это предполагает, что CurrencySymbol является свойством вашего LatestItemsInfo объекта. Если нет, отрегулируйте привязку соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...