将多个源绑定到列表框

时间:2012-02-12 07:29:24

标签: windows-phone-7 listbox

我正在使用List来绑定我的应用程序中的Listbox。但是我需要添加一个在绑定对象中不存在的extrafield。我不知道该怎么做。有什么想法吗?

我的代码:

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

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

我需要将此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 个答案:

答案 0 :(得分:2)

什么逻辑决定要显示哪种货币符号?这有复杂的逻辑吗?在不了解这个逻辑的情况下,我可以尝试建议一个解决方案。

通常有两种主要方式可以解决这个问题。

  1. 将您要绑定的集合中的每个对象包装到另一个添加该属性的对象中。包装器对象可以从“base”对象继承,只需添加属性。

  2. 使用值转换器。传递整个对象(或仅仅是属性,具体取决于确定要显示的货币符号的逻辑所需的内容)。从值转换器返回正确的货币符号。

  3. 希望这会有所帮助......

    Chris Anderson

答案 1 :(得分:0)

要么像Chris Anderson所建议的那样使用转换器,要么执行以下操作

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

请注意,这假设CurrencySymbol是LatestItemsInfo对象的属性。如果没有,请相应地调整绑定。