3

私が理解しているように、パネルは目に見える「クロム」を持つことを意図していません。StackPanel、Grid、および Canvas には、目に見える要素はありません (ただし、グリッド線は例外で、レイアウトのデバッグ専用であると言われています)。

この例では、添付プロパティを使用して子コントロールをレイアウトするカスタム パネルを作成します。ただし、カスタム パネルには、バックグラウンドで目に見える「グリッド」を表示したいと考えています。グリッドの外観 (サイズと配置) は、子要素のサイズと位置によって異なります。

これを達成する方法にはどのようなものがありますか? Silverlight と XAML 全般について非常に新しいので、最初に推測したのは、レイアウト用のカスタム パネルを含むカスタム コントロールを作成することでした。

特定のコードを理解できると思いますが、このシナリオに適したビルディング ブロックに関して正しい方向を示す必要があります。

4

2 に答える 2

2

カスタム パネルが余分なクロムを表示できないことは正しいです。子のみを表示できます (グリッドは例外です)。

やりたいことを行うには、追加の子を追加してクロムを表示するカスタムパネルを作成できます。ただし、これは適切な設計ではありません (Panel のユーザーには、これらの余分なアイテムが Children コレクションに表示されるため)。

最良のアイデアは、あなたが言ったことを実行することです: Children プロパティを公開するカスタム Control を作成します。このコントロールは、プライベート カスタム パネルを内部的に使用して、これらの要素をレイアウトできます (たとえば、TabControl は、タブをレイアウトするために特別な TabPanel を使用します)。コントロールの既定のテンプレートでは、パネルの Children プロパティの TemplateBinding をコントロールの Children プロパティに使用することができます。

于 2009-11-03T19:11:31.277 に答える
1

パネルはその子に Adorner を追加できます。Adorner に関する次の記事を参照してください: http://msdn.microsoft.com/en-us/library/ms743737.aspx

于 2012-04-16T22:01:44.853 に答える