0

各アイテムのコンテンツを動的に作成したいのですが、アイテムListBoxのリストと考えてください。または、連絡先のある電話帳アプリケーションを考えてみてください。各連絡先には、名前の下に1つ以上の電話番号が表示されます。名前は1つのフィールドで、電話番号は2番目のフィールドです。ただし、電話番号フィールドの内容は、連絡先が持っている電話番号の数に明らかに依存します。

好き:

Andrew Adams   <-- TextBlock for name
650-123-2222   <-- "Item" for numbers
490-222-3333

Benny Benjamin
650-123-3333

ListBoxメインアイテム内の数字アイテムに秒を作成することで、これを解決しようとしましたListBoxListBoxしかし、この2番目にC#のモデルをどのように入力できるかわかりません。

   <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

            <ListBox Name="ContactResultsData" ItemsSource="{Binding Contacts}" Margin="24,0" Height="620">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Name="ContactName" Text="{Binding ContactName}" Style="{StaticResource PhoneTextLargeStyle}" />
                            <ListBox Name="NumbersList" ItemsSource="{Binding NumbersList}">
                                <TextBlock Name="Number" Text="{Binding Number}" Style="{StaticResource PhoneTextSmallStyle}" />
                            </ListBox>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>
    </Grid>
</Grid>

NumbersList質問は次のようになります: C#からItemsSourceを設定するにはどうすればよいですか?または、他のより良いアプローチで問題を解決できますか?

4

2 に答える 2

1

ItemTemplateあなたはあなたの2番目のためにを設定する必要がありますListBox。次のようになります。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

        <ListBox Name="ContactResultsData" ItemsSource="{Binding Contacts}" Margin="24,0" Height="620">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Name="ContactName" Text="{Binding ContactName}" Style="{StaticResource PhoneTextLargeStyle}" />
                        <ListBox Name="NumbersList" ItemsSource="{Binding NumbersList}">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Name="Number" Text="{Binding Number}" Style="{StaticResource PhoneTextSmallStyle}" />
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</Grid>

ちなみに、コードビハインドまたはxamlから使用する必要がない限り、UI要素に名前(Nameまたはx:Name)を付けないでください。これは、ItemTemplate内のアイテムに特に当てはまります。

于 2012-05-15T16:12:40.093 に答える
0
  • インナーに直接含めることはできません
  • NumbersListがIListなどの場合、「Number」にバインドすることはできません。代わりに{Binding}を使用してください。
于 2012-05-15T15:42:46.040 に答える