2012-02-12 111 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對象的財產。如果不是,則相應地調整綁定。