2012-02-12 122 views
0

我正在使用List来绑定我的应用程序中的列表框。但是我需要添加一个不存在于绑定对象中的外场。我不知道该怎么做。请任何想法?绑定多个来源到列表框

我的代码:

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

什么逻辑决定了货币符号是什么是显示?这是否有复杂的逻辑?如果不了解这个逻辑,我可以试着提出一个解决方案。

有两种主要的方法可以解决这个问题。

  1. 总结你在,增加了物业的另一个对象绑定到集合中的每个对象。包装器对象可以继承“基础”对象,并简单地添加属性。

  2. 使用值转换器。传递整个对象(或者只是一个属性,取决于决定要显示的货币符号的逻辑需要什么)。从值转换器中返回正确的货币符号。

希望这有助于...

克里斯·安德森

+0

我已经得到了货币符号..我只需要在文本块上显示它。那么你可以帮我用代码... – 2012-02-12 11:00:30

+1

那么代码取决于确定正确的货币符号所涉及的逻辑。这是一篇关于价值转换器的博客文章。 http://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight-databinding-valueconverter.aspx – 2012-02-12 22:14:13

0

要么去同一个转换器,由克里斯·安德森的建议,或做类似下面

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

注意这假定CurrencySymbol是您的LatestItemsInfo对象的财产。如果不是,则相应地调整绑定。