2015-07-22 19 views
7

Dahili bir araç için, Blender'ın düğüm düzenleyicisine (aşağıdaki resme bakın) veya UE4'ün WPF ile blueprint editörüne benzer bir şey oluşturmam gerekiyor.WPF'de "Infinite" Paneli

Blender's node editor

arka uç ve bireysel bloklar bir sorun değildir, ancak ben keyfi bir büyüklükte ve genişleyen tuval konuda nasıl emin değilim. ScrollViewer içinde bir Canvas kullanmayı düşündüm, ama sanırım sola kaydırma yapmak zor olurdu (yani, kullanıcı ScrollViewer öğesinin kenar olduğunu düşündüğünün soluna düğümler eklemesi gerekiyorsa). WPF'ye nispeten yeniyim, bu yüzden birisi bana doğru yönde işaret edebilir mi?

cevap

3

IScrollInfo arabirimiyle kendi özel Panel uygulamanızı yazmanız gerekecektir. Bu arabirim aracılığıyla, panelinizin boyut boyutunu ScrollOwner.InvalidateScrollInfo() yöntemini kullanarak istediğiniz zaman dinamik olarak değiştirebilirsiniz. İşte başlangıç ​​alacak bazı bağlantılar:

Ben Constable excellent blog post series about IScrollInfo

Virtualizing Canvas example implementation

Nihai kodu ScrollViewer içine özel panelini kullanarak bir ItemsControl içermelidir. Bloklar arasındaki bağlantıları çizerken, kişisel olarak, DrawingContext'u kullanarak çizen OnRender kodu ile panelinizin üstündeki şeffaf katmanı kullanacağım.

DÜZENLEME:

atın this article. Burada çalışan bir düğüm düzenleyici kontrolü var.