2011-01-03 13 views
1

私は窓の電話7アプリケーションを開発しています。私は銀色の新人です。私はリストボックスに文字列のリストをバインドしようとしています。私は、次のコードListBoxコントロールにデータを動的にバインドする方法は?

ObservableCollection<String> abc = new ObservableCollection<String>(); 
      abc.Add("XYZ"); 
      IncomeSummaryListBox.ItemsSource = abc; 

私のXAMLは、上記のコードの私のリストボックスには、実行時にはアイテムを示さないと、次のコード

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 

         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

が含まれているを使用しています。私のエミュレータデバイスはリストボックスに何も表示しません。私のコードで何が間違っていますか?上記の問題を解決できるように、上記の問題のコードやリンクを教えてください。私が何か悪いことをしているなら、私を案内してください。

答えて

2

あなたは実際にアイテムを表示するためにデータテンプレートを教えていません。 xamlからListBox.ItemTemplate全体を削除するだけで、文字列を表示するこの単純なケースでは、作業が開始されます。あなたが使用することができ、学術的な理由のために

: -

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

これはのItemsSourceから項目にTextBlockTextプロパティをバインドします。

0

アイテムを縦方向ではなく横方向に表示したい場合は、DataTemplateではなくItemsPanelTemplateを置き換えることをお勧めします。

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
    <ListBox.ItemsPanelTemplate > 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
    </ItemsPanelTemplate> 
    </ListBox.ItemsPanelTemplate > 
</ListBox> 
+0

実際、Shaileshがおそらく 'ItemsPanelTemplate'プロパティを探しているといいのです。しかし、 'IsItemsHost'プロパティ(その読み取り専用)を設定する必要はありません。 OrientationをHorizo​​ntalに設定して、 'VirtualizingStackPanel'(デフォルトで使用されているように)を使う方が良いでしょう。 – AnthonyWJones

+0

私のWPFコードの一部からIsItemsHostを取り出しました。[削除]。 VirtualizingStackPanelの優れた点。 – NotDan