2011-01-25 8 views
1

私は以前これをやったことがありますが、私は古いコードを見つけることができません。WPFカスタムコントロールの質問

ウィンドウをウィンドウ内に埋め込むにはどうすればいいですか?

letがTIAに..私は、カスタムフォームを作成し、Window1.xamlとしてそれを保存して、XAMLコードをコピーせずに、Window2.xamlでそれを埋め込み、貼り付けたい

EDITを言う:私は私の質問だと思いますやや誤解を招くように、私はそれを言い換えるつもりです。

私はこのWindow1.xamlを持っています。カスタムヘッダーと背景イメージ/色を追加しました。

Window2.xamlでは、私はWindow1をカスタムコントロールにして、ここに埋めたいと思っています。

ない、まだ答えをグーグルで、そのコンテンツのプレゼンターであれば確認してください:)

答えて

1

このような場合は、ページやユーザーコントロールを使用する必要があります。この方法で、アプリケーションで定義された他のパーツ/ページ/コントロールに移動できます。 CodeKaizenは正しく、別のウィンドウ内にウィンドウをホストすることはできません。

0

私はあなたがそれを行うことができますかわからない - しかし、あなたは、通常のを使用し、ウィンドウに直接ユーザーインターフェイスを置くべきではありませんコントロール(カスタムまたはユーザーのいずれか)を使用して、ウィンドウで再利用します。

+0

私はそれが本当にウィンドウを直接置いていないと思う、私はそれがカスタムコントロールのようにしたいと思う – Joe

3

あなたは別のWPFウィンドウ内のWPFウィンドウをホストすることはできませんが、別のウィンドウからコンテンツを移動することができます:あなたはnullwindow1.Contentを設定するか、他あなたが例外を取得

var window1 = new Window1(); 
var window2 = new Window2(); 

var content = window1.Content; 
window1.Content = null; 
window2.Content = content; 

注意、そうでない場合、コンテンツには視覚的な親が存在するからです。

UPDATE あなたがする必要があるすべてはWindow2でそのユーザーコントロールをホストする、その後、新しいUserControlWindow1<Window></Window>タグの間のすべてのXAMLをコピーすることで表示されます。

0

私は希望が役立ちます

あなたは

//Window you want to show 
Window1 child = new Window1(); 

object content = child.Content; 
child.Content = null; 

//Where to show 
this.grid1.Children.Clear();  
this.grid1.Children.Add((UIElement)content); 
の後ろのコードでそれを行うことができます知っています!

+0

悪くはないが、このコードを少しきつくする( 'content'を' UIElement'または 'var '' grid1'の必要はありません)。 – codekaizen

0

本当にUserControlが必要なようです。 Window1の型をWindowからUserControlに変更し、そのUserControlをWindow2に配置します。

関連する問題