2016-03-22 12 views
1

私は、テキストブロックのコーナーのレンダリングされた位置を取得しようとしています。私はそれを行う方法を見つけることができないようです。テキストブロックは境界線で結ばれ、境界線は境界線で結ばれます。したがって、テキストブロックと境界線には、ウィンドウの残りの部分に関連して引き出すことのできる次元はありません。私は次のコードを試しましたが、その一部だけが動作します。余白は0、ActualWidthは13.2です。この行に達すると、ウィンドウとテキストブロックがレンダリングされます。テキストブロックの隅のレンダリングされた位置を計算するにはどうすればよいですか?

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

更新: 私は主に私が望むことを次のコードを持っています。しかし、ポイントはUI要素とうまく一致しません。要素の近くに任意に配置されているように見えます。ポイントは、ブロックの境界線と整列していません。

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

その行はどのような方法ですか?実際にこの時点でウィンドウが描画されていますか? – Andy

+0

ウィンドウはすでにテキストブロックと同様にレンダリングされています。 – Sean

+2

[TranslatePoint](https://msdn.microsoft.com/en-us/library/system.windows.uielement.translatepoint(v = vs.110).aspx)メソッドを使用すると、他の要素。 – Clemens

答えて

1

だからあなたのテキストボックスは寸法されていない、あなたは上記の線のように表示されるので、国境内のテキストの位置をつかむことがありましたコードは内部のランダムに描かれています...ボーダーによってカプセル化されています要素。封筒境界の位置をつかんでみてください。

+0

はい、うまくいきます!ありがとう!しかしそれはなぜ機能するのですか? – Sean

+0

私の推測では、あなたのテキストボックスが作成時にサイズ変更されていないので、テキストを変更するたびに、テキストボックスと境界線のサイズが変更されません。これは、ポイントが境界線の内側のどこかにあることを意味します(あなたのように)。 – Ben

関連する問題