Как динамически привязать данные к элементу управления ListBox? - PullRequest
1 голос
/ 03 января 2011

Я занимаюсь разработкой приложения для windows phone 7.Я новичок в серебряном свете.Я пытаюсь привязать список строк к списку.Я использую следующий код

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 ]

2 голосов
/ 03 января 2011

Вы на самом деле не сказали шаблону данных отображать элемент. В этом простом случае отображения строк, если вы просто удалите весь ListBox.ItemTemplate из своего xaml, он начнет работать.

Для академических целей вы можете использовать: -

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

Это связывает свойство Text TextBlock с элементом из ItemsSource.

0 голосов
/ 03 января 2011

Если вы хотите, чтобы ваши элементы отображались горизонтально, а не вертикально (как, возможно, вы пытаетесь это сделать), вам нужно заменить ItemsPanelTemplate вместо DataTemplate.

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