2012-02-12 21 views
0

私はリストを使用してアプリケーションのリストボックスをバインドしています。しかし、私はバインドされたオブジェクトに存在しない追加フィールドを追加する必要があります。私はそれをどうするか考えていない。任意のアイデアをしてください??複数のソースをリストボックスにバインドする

マイコード:私は私のリストボックスには、このたcurrencySymbolを追加する必要が

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つの主な方法があります。

  1. プロパティを追加する別のオブジェクトにバインドするコレクション内の各オブジェクトをラップします。ラッパーオブジェクトは、「ベース」オブジェクトから継承し、単にプロパティを追加することができます。

  2. バリューコンバータを使用します。オブジェクト全体(または表示する通貨記号を決定するロジックに必要なものに応じてプロパティのみ)を渡します。値変換プログラムから正しい通貨記号を返します。このことができます

希望...

クリス・アンダーソン

+0

私はすでに通貨記号を持っています。私はそれをテキストブロックに表示するだけです。だからあなたはコードで私を助けることができます... –

+1

コードは正しい通貨記号を決定することに関与するロジックに依存します。バリューコンバータについてのブログ記事ですhttp://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight-databinding-valueconverter.aspx –

0

どちらかがクリス・アンダーソンによって示唆されているように、コンバータで行く、または以下の

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

ノートのような何かをすることこれは、CurrencySymbolがLatestItemsInfoオブジェクトのプロパティであることを前提としています。そうでない場合は、それに従ってバインドを調整します。