2009-02-20 10 views
6

Silverlight 2の別のコントロールにUserControlをプログラムで追加して、親コントロールの "Children"コレクションに追加します。最初はうまくいきます。私がウィンドウに何か他のものを行うと(私の場合は、パネル全体をスクロールしてからビューに戻す)、レンダリングの順序が変わり、コントロールが他のものの背後にあるようになります。私はこの動作を制御する方法を探しています。ウィンドウを強制的に上に置くようにしています。 CanvasコントロールにはZOrderプロパティがあり、これを設定できますが、私はCanvasを使用していません。私はGridを使用しています。Canvasコントロールを使用せずにSilverlightでレンダリング順序(ZOrder)を制御する

私はChildren.Insertを使って遊んだことがあり、インデックスをつぶしてレンダリングの順序も変えていますが、それは問題を解決するための複雑な方法のようです。コントロールを強制的に上に置くことはできますか?

--Mattが

答えて

4

グリッドでは、ZOrderはオーダーまたは子によって指示される必要があります。位置0は底部にあり、位置1は位置0の上にあり、以下同様である。

Canvas.ZIndexをグリッドで使用することに同意できないと思います。キャンバスのアタッチされたプロパティなので、キャンバス内のグリッドの場合にのみ使用できます。

http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.zindex(VS.95).aspx

1

あなたはグリッドにCanvas.ZIndexを使用することができるはず、それは実際misnamedだとPanel.ZIndexをする必要がありますが、それは動作するはずです。

7

Canvas.ZIndexグリッド(およびUIElementから誘導される任意の他の制御)のために働くだろう。

http://msdn.microsoft.com/en-us/library/bb979730(VS.95).aspxからわかるとおり、Silverlightのすべてのレンダリングされた要素の基本クラスであるUIElementから派生したものはすべて、Canvas.ZIndexプロパティとCanvas.TopおよびCanvas.Leftをサポートしています。

関連する問題