В моем приложении WPF у меня есть Холст, в котором я делаю некоторый рисунок. Ранее я обработал рисунок в коде позади, но теперь я факторизовал все к ViewModel. Это дает мне некоторые проблемы..
У меня есть несколько объектов InkPresenter, содержащих Штрихи. Earier я добавил их как дети к Холсту в коде позади - как это:
// Build an InkPresenter:
var someInkPresenter = BuildInkPresenter(..);
//_myCanvas is the <Canvas> I want to display it in:
_myCanvas.Children.Add(someInkPresenter);
Теперь - не создание InkPresenter в коде - позади XAML, который содержит _myCanvas, я должен сделать это по-другому. То, что я хотел бы сделать, должно создать InkPresenter и добавить его к набору:
public ObservableCollection<InkPresenter> Drawings;
Моя проблема теперь состоит в том, как связать Холст с этим ObservableCollection - и отобразите InkPresenters при добавлении к набору. Я могу достигнуть этих Данных использования Привязка так или иначе?
Я думаю, вы можете сделать это с помощью ItemsControl + ItemsPanelTemplate . Примерно так:
<ItemsControl ItemsSource="{Binding YourCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Чтобы узнать больше об этом подходе, обратитесь к Dr.WPF: ItemsControl: от A до Z ( P для Panel )