35

ユーザー コントロールから親ウィンドウにアクセスしようとしています。

userControl1 uc1 = new userControl1();

mainGrid.Children.Add(uc1);

このコードを使用userControl1して、メイン グリッドに読み込みます。

しかし、内部のボタンをクリックすると、メインウィンドウにあるuserControl1別のボタンをロードしたいですか?userControl2mainGrid

4

6 に答える 6

67

やってみました

Window yourParentWindow = Window.GetWindow(userControl1);
于 2013-04-26T12:53:22.723 に答える
4

提案した唯一の理由

Window yourParentWindow = Window.GetWindow(userControl1);

うまくいかなかったのは、正しいタイプにキャストしなかったためです。

var win = Window.GetWindow(this) as MyCustomWindowType;

if (win != null) {
    win.DoMyCustomWhatEver()
} else {
    ReportError("Tough luck, this control works only in descendants of MyCustomWindowType");
}

あなたのタイプのウィンドウとあなたのコントロールとの間にもっと多くの結合が必要でない限り、あなたのアプローチは悪いデザインだと思います。

コントロールがコンストラクタ パラメータとして動作するグリッドを渡し、それをプロパティにするか、任意の内部で適切な (ルート ?) グリッドをWindow動的に検索することをお勧めします。

于 2015-09-29T09:26:27.820 に答える
0

みんな助けてくれてありがとう。私は別の解決策を得ました

 ((this.Parent) as Window).Content = new userControl2();

これは完全に機能します

于 2013-04-26T14:49:20.417 に答える