У меня есть класс, определенный таким образом:
public class CustomClass
{
string Name;
int Age;
Usercontrol usercontrol;
}
где Usercontrol — это визуальный элемент, который я хочу вставить в WrapPanel.
CustomClass организован в статической коллекции ObservableCollection.
public static class CollectionClass
{
public static ObservableCollection<CustomClass> MyCollection = new ObservableCollection<CustomClass>();
}
Я хочу связать свойство usercontrol CustomClass в коллекции для визуализации в WrapPanel, поэтому визуальные элементы отображаются в том же порядке, что и элементы в коллекции.
Прямо сейчас я заполняю WrapPanel вручную с помощью кода, но я подумал, что должен быть способ сделать это быстро и легко с помощью привязки данных. Я пытаюсь сделать это с помощью ItemsControl, определенного следующим образом:
<ItemsControl Name="SensorMenuWrap" ItemsSource="{Binding }">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
но я не знаю, как заставить случиться волшебство.
ИЗМЕНИТЬ:
Я попробовал решение, предложенное ChrisO, реализованное так:
1 - я сделал коллекцию свойством
2 - я сделал UserControl свойством
3 - я устанавливаю DataContex из кода:
SensorMenuWrap.Datacontext = CollectionClass.MyCollection
4 - Обвязка:
<ItemsControl Name="SensorMenuWrap" ItemsSource="{Binding }">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding usercontrol}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Теперь я могу визуализировать первый элемент коллекции. Если первый элемент изменяется, я визуализирую новый первый элемент. Как я могу визуализировать всю коллекцию?