ユーザー コントロールから親ウィンドウにアクセスしようとしています。
userControl1 uc1 = new userControl1();
mainGrid.Children.Add(uc1);
このコードを使用userControl1
して、メイン グリッドに読み込みます。
しかし、内部のボタンをクリックすると、メインウィンドウにあるuserControl1
別のボタンをロードしたいですか?userControl2
mainGrid
やってみました
Window yourParentWindow = Window.GetWindow(userControl1);
提案した唯一の理由
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
動的に検索することをお勧めします。
みんな助けてくれてありがとう。私は別の解決策を得ました
((this.Parent) as Window).Content = new userControl2();
これは完全に機能します