さて、私はしばらく前から頭を傷つけています。しかし、私の問題に対する解決策を見つけることができませんでした。私が持っているのは、ObservableCollection TabItemsを持つMainViewModelです。 MainViewModelは、TabControlをホストするMainView(User Control)のDataContextとして設定されます。 tabcontrolはTabItemsコレクションにバインドされています。タブコントロールの内容は、ReportItemsユーザーコントロールになります。タブ内からタブコントロールを追加する
この設定は、基本的にSSRSのUIをレポートするためのレポートです。最初のタブには、ユーザがレポートパラメータを選択する場所からいくつかのリストボックスを表示するレポート選択リストが含まれています。パラメータを選択した後ではなく、ユーザーがボタンをクリックするとレポートが生成され、レポートホストを持つタブコントロールにタブが追加されます。
メインビューではなくタブからレポートを選択しようとしている理由は、多くのパラメータが選択されているため、リストボックスをMainViewに追加すると、tabcontrolのために残されたスペースがユーザーはレポートを表示するためにスクロールダウンする必要があります。
デザインに欠陥があるかどうかはわかりませんが、新しいReportItemViewModelを追加してTabItemコレクションに追加する方法を考えたかったのです。これは、子タブに、ReportItemViewModelオブジェクトをMainViewModelに送信してcolectionに追加することによって、兄弟を追加できるようにすることを意味します。
私は静的なコレクションを使用することを考えましたが、それは私のOnPropertyChangeメソッドを呼び出さないでしょう。また、静的メソッドをMainViewModelに持たせても、コレクションが静的ではないためコレクションにオブジェクトを追加できないため、役立たない。
私はそれ自身を始める方法に固執して以来、私はここにコードを掲載していません。私は別の投稿hereを見ましたが、それを使う方法を理解できませんでした。
ご迷惑をかけて申し訳ございませんが、質問を明確にしたいと思います。
私はより良いデザインを得ることができる場合でも、私は任意の提案に開放されています。私は絶望的であり、どんな助けも認められるだろう。
ポップアップまたはエキスパンダーを使用して、追加プロセスのUIをホストすることができます。あなたは画面の不動産を使用せず、ReportItemViewModelではロジックを追加しないでください。 – AlexDrenea
ポップアップは私が考えていたものでしたが、外見が崩れているように感じました。エキスパンダーについて、私は複数のレポートを持っているので、実装方法はよくわかりません。レポートごとに1つのエクスパンダが無効/不可視モードにあり、レポートの選択に基づいて有効/表示可能にする必要があることを意味しますか。あなたは精緻化できますか? –
画面の不動産を保存したいので、メインビューではなくタブにリストがあると言っています。私は、メインビューでエキスパンダーを使用すると、折りたたまれたときにレポートのための十分なスペースが得られ、拡張されたときに新しいレポートを追加するのに十分なスペースがあると言っていました。 – AlexDrenea