2010-12-20 10 views
13

'un sol üst koordinatlarını alma Microsoft yeniden boyutlandırma Adorner örneğini genişletme üzerinde çalışıyorum ve alt sol sürükleme tutamacı sürüklendikten sonra öğeyi yeniden konumlandırabilmeli.WPF UIElement

Eğer 150 genişlikte bir metin kutusu varsa, formumda 35 yüksek postitioned varsa ve sol alt sürükle kolu genişliği 200 geniş olarak değiştirirse, metin kutusunun sağ tarafı değişmeden kalır ancak soldaki kenar hareket eder sola.

UIElement'in sol üst koordinatlarını bilmem gerekiyor. Canvas.GetLeft ve Canvas.GetTop denedim ama kafa karıştırıcı olan NaN döndürüyorlar.

Sadece bir ofset döndüren VisualTreeHelper.GetOffset'i denedim, ancak bunu kullandığınız öğenin düzenleme yönteminde kullanmayı denediğinizde, muhtemelen ofset değerlerinin çok yüksek olması gibi.

Wpf'den önceki günlerde, koordinat sistemi oldukça basitti, wpf'nin bence aşırı karmaşık şeyler var.

cevap

8

UIElement koordinatlarını üst öğeye dönüştürebilirsiniz. Senin durumunda, bu bir form. birisi sadece istiyorsa

private Point GetPosition(Visual element) { 
    var positionTransform = element.TransformToAncestor(MyForm); 
    var areaPosition = positionTransform.Transform(new Point(0, 0)); 

    return areaPosition; 
} 
21

Ve denetimin ekran koordinatları:: Burada görsel koordinatlarını döndüren bir yöntemin bir örneğidir

Point targetLoc = targetCtrl.PointToScreen(new Point(0, 0)); 

(bu parçacığının açıklamasına uygun değil, ama başlık ile eşleşiyor. Arama sonuçlarında insanların gelmesine yardımcı olabilir.)

+0

Tam olarak aradığım şey !! – Shefali

+1

Bu yanıtı almak için google'dan bu gönderiye (başlıktan dolayı) gelindi. Teşekkür ederim! – StinkyCat