Привязать коллекцию пользовательских объектов к пользовательским элементам управления в панели стека - PullRequest
0 голосов
/ 31 января 2020

У меня есть UserControl, который я сделал с несколькими Label с, чтобы показать информацию из написанного мной пользовательского класса, в котором есть поля, содержащие данные, которые Label s должны отображать.

У меня будет коллекция объектов указанного класса, и я хочу, чтобы они отображались в моем окне WPF один под другим по горизонтали.

Я подумал использовать StackPanel, так как не знаю слишком много о WPF, чтобы думать о других элементах управления, которые могут это сделать. Поэтому я искал способ связать коллекцию с StackPanel.

. Я нашел следующие вопросы: Q1 , Q2 и Q3

Однако простое размещение моего UserControl в DataTemplate не работает, и я не знаю, как сказать WPF - возьмите эту коллекцию объектов и t ie каждый объект в экземпляр my UserControl и сложите их в этой StackPanel.

Я бы довольно сильно предпочел использовать для этого главным образом XAML, поэтому ответ с WPF Data Binding был бы очень признателен, спасибо!

1 Ответ

0 голосов
/ 31 января 2020

Вам нужно установить DataContext на ViewModel, в котором есть ваша коллекция пользовательских объектов (например, MyObjectcollection), а затем просто установить привязки следующим образом:

<ItemsControl ItemsSource="{Binding MyObjectCollection}">
<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" IsItemsHost="True"/>
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <MyUserControl />
    </DataTemplate>
</ItemsControl.ItemTemplate>

...