在我的WPF應用程序中,我有一個Canvas,在其中繪製一些圖形。早些時候,我在後面的代碼中處理了繪圖,但現在我已將所有事情都考慮到了ViewModel。這給我一些挑戰..將WPF Canvas子項綁定到ObservableCollection
我有幾個InkPresenter對象持有筆畫。 Earier我加入他們的孩子到畫布後面的代碼 - 這樣的:
// Build an InkPresenter:
var someInkPresenter = BuildInkPresenter(..);
//_myCanvas is the <Canvas> I want to display it in:
_myCanvas.Children.Add(someInkPresenter);
現在 - 不是建設持有_myCanvas我需要以不同的方式做到這一點的XAML的代碼隱藏InkPresenter。我想要做的是創造一個InkPresenter並將其添加到集合:現在
public ObservableCollection<InkPresenter> Drawings;
我的問題是如何將畫布綁定到這個的ObservableCollection - 並有當添加到集合中的InkPresenters顯示。我可以使用數據綁定以某種方式實現這一點嗎?
Thx!聽起來很合理。將看看它! – stiank81 2010-02-23 11:56:40
這通常是您要採取的方法,但在這種情況下您可能會遇到問題,因爲InkPresenter不會像Canvas那樣直接作爲子代,就像它們在代碼中添加它們時一樣。相反,Visual Tree將在每個InkPresenter項目周圍注入一個額外的ContentPresenter。爲了使這種方法起作用,您應該查看每個InkPresenter的實際數據(Strokes),並將這些數據存儲在您的VM中。然後,您可以創建一個覆蓋GetContainerForItemOverride以返回InkPresenter的自定義ItemsControl。 – 2010-02-23 17:17:04
不能同意你約翰...這是一個ItemsControl。它使用UIElement作爲默認容器... – Anvaka 2010-02-23 17:46:05