-1

こんにちは、次のようなカスタム UserControl のクローン (浅いクローン) を作成したいと思います。

ucButton uc;
ucButton uc2;
uc = uc2;

これを行うと、コンパイラーはキャンバスから古いインスタンス (uc) を削除することを要求します。

使用:

Canvas1.Children.Add(uc)

Canvas2.Children.Add(uc2)

助言がありますか?

前もって感謝します

4

1 に答える 1

1

悲しいことに、それを達成する簡単な方法はないと思います: ユーザー コントロールに他の参照型が含まれている場合、それらを共通にする必要がありますか、それともコピーする必要がありますか?

さらに、UserControl に添付されている依存関係プロパティの完全なリストを取得することはできません。

個人的には、ユーザー コントロールを xaml リソースの DataTemplate にカプセル化し、必要に応じて DataTemplate からユーザー コントロールの新しいインスタンスを作成します

<DataTemplate x:Key="ucButton">
  <myControls:ucButton ... />
</DataTemplate>

コードで、リソースからテンプレートを取得し、コンテンツをロードします

var uc = template.LoadContent() as UserControl;
var uc2 = template.LoadContent() as UserControl;

あなたがやろうとしていることは正確ではないことを理解しています。xaml からのインスタンス化がオプションでない場合、私のソリューションは機能しません。

于 2012-11-19T09:55:38.283 に答える