2010-12-05 31 views
0

私は使用しようとしているTimeoutPanelというカスタムWPFユーザーコントロールを持っています。しかし、.csファイルからウィンドウに追加しようとすると、実際には表示されません。カスタムユーザーコントロールがWPFウィンドウに表示されませんか?

私は、タイムアウト画面を所有するウィンドウへのハンドルを取得する必要があります。

TimeoutPanel tp = new TimeoutPanel(this); 
tp.Visibility = Visibility.Visible; 

私が間違っていることを誰かが指摘できたら本当にありがとう!

編集:

TimeoutPanel tp = new TimeoutPanel(this); 
MainGrid.Children.Add(tp); 

それは例外でクラッシュ:ここに 私はホームスクリーンウィンドウのは.csファイルに次のコードでそれを呼び出しています私のTimeoutPanel

public TimeoutPanel(Window parent) 
{ 
    this.InitializeComponent(); 
    parentWindow = parent; 
} 

のコンストラクタです: 追加情報: 'TicketBooth.TimeoutPanel'タイプのオブジェクトを作成できません。 CreateInstanceは失敗しました。これは、 'TicketBooth.TimeoutPanel'のためのパブリックデフォルトコンストラクタを持たないことが原因です。マークアップファイル 'TicketBooth; component/homescreen.xaml'行のオブジェクト 'System.Windows.Controls.Grid'のエラーLine 174 Position 10.

ありがとう!

+0

ああ、申し訳ありません!例外は私の部分のタイプミスだった...それは今働いているようだ!あなたの助けをありがとう! – ksamurai

答えて

1

を行う必要があるので、

と仮定、あなたはあなたのメインウィンドウにstckPanelと呼ばれるのStackPanelを持っていますWPFアプリケーションのウィンドウにUserControlを配置します。 UserControlをWindow内の子に配置する必要があります。 Visiblityを設定しても、実際にはUserControlはコンテナの子として配置されません。

私の推測では、グリッドはウィンドウ内のコンテナです。もしそうなら、グリッドにUserControlを追加するには、グリッド内の子として追加するだけです。あなたのグリッドには、コードの中でそれを参照する前に名前を付ける必要があります。

TimeoutPanel tp = new TimeoutPanel(this); 
myGrid.Children.Add(tp); 
0

このコントロールをいくつかの親コントロールコレクションに追加する必要があります。あなたは、これがこのスタックパネルの下にコントロールを作成して表示したい場合、あなたはあなたがいない中で希望やっている次のコード

TimeoutPanel tp = new TimeoutPanel(this); 
stckPanel.Children.Add(tp); 
+0

フィードバックいただきありがとうございます!しかし、これを行うとクラッシュします。私はしかし、コンストラクタからパラメータを削除すると動作することに気がつきました。おそらく、最良の方法は、次のようにパラメータを渡すように設定した後に2番目のメソッドを呼び出すことです: TimeoutPanel tp = new TimeoutPanel(); tp.passPartent(this); パラメータを使用してクラッシュする理由を説明できるとすばらしいことでしょう。ありがとう! – ksamurai

+0

@Kim例外を投稿し、ctor内のその参照で何をしているのですか? –

+0

@Aaron Okayは私のオリジナル投稿を更新しました。ありがとう。 – ksamurai

関連する問題