Как связать две разные коллекции данных с двумя разными списками PanoramaItem?

У меня есть AItems и BItems, я хочу связать AListBox в PanoramaItem и BListBox в другом PanoramaItem.

Я указал ItemsSource в каждом ListBox

<controls:PanoramaItem>
    <ListBox ItemsSource="{Binding AItems}" >
      ...
    </ListBox>
</controls:PanoramaItem>
<controls:PanoramaItem 
    <ListBox ItemsSource="{Binding BItems}" >
      ...
    </ListBox>
</controls:PanoramaItem>

Как привязать данные к каждому ListBox из кода?

У меня есть метод конструктора

public MainPage()
{
    InitializeComponent();
}

и метод загрузки страницы

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
}

Спасибо.


person Xiao Han    schedule 19.01.2012    source источник


Ответы (1)


Чтобы привязать коллекции к элементам управления в программном коде:

1) Дайте имена спискам
2) в коде задайте ‹listboxName›.ItemsSource = ‹коллекция›

(Вы должны убедиться, что ваши коллекции относятся к ObservableCollection‹myType›, чтобы гарантировать, что если коллекция изменится, это будет отражено в представлении.)

Например...

<controls:PanoramaItem>
    <ListBox Name="AItemBox" >
      ...
    </ListBox>
</controls:PanoramaItem>
<controls:PanoramaItem 
    <ListBox Name="BItemBox" >
      ...
    </ListBox>
</controls:PanoramaItem>

а потом

private void BindMyControls()
{
    AItemBox.ItemSource = AItems;
    BItemBox.ItemSource = BItems;
}

Затем вы можете вызвать BindMyControls() из наиболее подходящего места, скорее всего, после заполнения коллекций.

person ZombieSheep    schedule 19.01.2012