2016-03-22 19 views
1

Metin bloğunun köşelerinin oluşturulmuş konumunu elde etmeye çalışıyorum. Bunu nasıl yapacağımı anlayamıyorum. Metin bloğu, bir ızgara tarafından sınırlanan bir sınır tarafından sınırlandırılır. Bu nedenle, metin bloğu ve kenarlığın, Pencerenin geri kalanıyla ilişkili olarak çekebileceğim boyutları yoktur. Aşağıdaki kodu denedim, ancak sadece bir kısmı çalışır. Marj 0 ve ActualWidth 13.2'dir. Bu çizgiye ulaşıldığı zaman, pencere ve metin blokları oluşturuldu.Metin bloğunun köşelerinin oluşturulmuş konumunu nasıl hesaplarım?

double rightBound = textBlock.Margin.Left + textBlock.ActualWidth; 

Güncelleme: Çoğunlukla ne istediğimi yapar aşağıdaki kodu var. Ancak, noktalar UI elemanları ile iyi bir şekilde DEĞİLDİR; öğelerin yakınında keyfi olarak yerleştirilmiş gibi görünüyorlar. Noktalar bloğun sınırları ile uyuşmuyor.

Point blockPoint = textBlock.TranslatePoint(new Point(0, 0), myMainWindow); 
+0

Bu yöntem hangi yöntemde? bu noktada aslında çekilen pencere var mı? – Andy

+0

Pencere, metin bloklarının yanı sıra zaten oluşturuldu. – Sean

+2

Herhangi birine göre konumu almak için [TranslatePoint] (https://msdn.microsoft.com/en-us/library/system.windows.uielement.translatepoint (v = vs.110) .aspx) yöntemini kullanabilirsiniz. diğer öğe. – Clemens

cevap

1

Yani metin kutusu boyutlandırılmış değilse ve yukarıdaki hatları gibi görünen bu nedenle, sınırın içinde metnin konumunu kapma olabilir verdi kod içeride rastgele çizilir ... Bir sınırın içinde eleman Kapsüllü sınırın konumunu tutmayı deneyin.

+0

Evet, işe yarıyor! Teşekkürler! Ama neden işe yarıyor? – Sean

+0

Benim tahminim, metin kutunuzun oluşturulma boyutunda olmadığından, metni her değiştirdiğinizde, metin kutusu değil, kenarlık yeniden boyutlandırılır. Bu, noktanın sınır içinde (tarif ettiğiniz gibi) bir yerde olduğu anlamına gelir. – Ben

İlgili konular