Привязать ListBox к словарю - PullRequest
0 голосов
/ 01 апреля 2011

Я бы хотел привязать список Silverlight ListBox к Dictionary<int, string>. Я безуспешно пробовал следующее:

someListBox.ItemsSource = someItems;

и

someListBox.ItemsSource = someItems.Values;

Ответы [ 2 ]

7 голосов
/ 02 апреля 2011

Оба эти подхода будут работать при условии, что словарь полностью заполнен на момент назначения.Учитывая это в вашем пользовательском контроле: -

 <ListBox x:Name="lst" />

, тогда этот код: -

        var data = new Dictionary<int, string>();
        data.Add(1, "Hello");
        data.Add(2, "World");

        lst.ItemsSource = data.Values;

Отобразит две строки "Hello" и "World".

Дайте ListBox шаблон: -

    <ListBox x:Name="lst">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Text="{Binding Key}" Margin="5" />
                    <TextBlock Text="{Binding Value}" Margin="5" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>            
    </ListBox>

Теперь вы можете назначить сам словарь: -

    lst.ItemsSource = data;

В списке отображается набор пар ключ-значение.

0 голосов
/ 01 апреля 2011

Решение этой проблемы было очень простым: я не звонил InitializeComponent();, прежде чем пытался привязать данные к элементу управления.

...