2011-01-24 13 views
0

グリッドの特定のポイントにUserControlを追加するだけです。 Girdに追加した後にRenderTransformを使用してこれを行うことができますが、このときにVisualTreeに追加されたとは思われません。要素にVisualTreeが追加されていないため、グリッドに追加した直後にRenderTransformを実行すると問題が発生します

Transformを実行する前にUIスレッドが完了するのを待つ方法はありますか?ピクセルを使用してアイテムをグリッドに追加する方法はありますか?左から40px、上から40pxですか?次のように

私が使用しているコードがある、それが最初の場所、ポイントにgirdに追加されるところ....

grid.Children.Add(temp); 
TranslateTransform transform = new TranslateTransform(-oldPosition.X+temp.posx, -oldPosition.Y+temp.posy);    
temp.RenderTransform = transform; 

oldPositionです。 temp.posxとtemp.posyは、私がUserControlを望むx座標とy座標です。

グリッドに行と列が設定されていないことに注意してください。グリッドを使用する理由はアプリケーションを最大化でき、グリッドが画面全体を埋めることができるためです。これを行う。

答えて

0

は、あなただけ行うことはできません。

grid.Children.Add(temp); 
Grid.SetColumn(textBlock, Y); 
Grid.SetRow(textBlock, X); 
+0

私はその正確なコードを試してみましたが、コントロールがまだの途中で右に終わります画面。私はグリッドの行や列を設定していないためだと思います。これを行う方法はありますか?フルスクリーンアプリケーションがまだあるのですか?お返事をありがとうございます! – christoefar

0

私はUpdateLayoutはそれを行うだろうと考えている。

grid.Children.Add(temp); 
grid.UpdateLayout(); 
TranslateTransform transform = new TranslateTransform(-oldPosition.X+temp.posx, -oldPosition.Y+temp.posy); 
temp.RenderTransform = transform; 
+0

それは状況を助けました! :)私は今コントロールを追加し、それらを配置するためにただ一つのボタンを使用することができます。私はコンストラクタからこのメソッドを呼び出す方法がないので、ボタンを一度押す必要はありません。それでは、起動時に追加して位置付けます。ありがとうございました! – christoefar

関連する問題