0

私はいくつかのユーザーコントロールがあるシナリオを持っています。

  1. CreateStudents
  2. 教師の作成

各ユーザー コントロールには、独自のビュー モデルがあります。データコンテキストは初期化で設定されます。

上記のユーザー コントロールをロードできるメイン UI があります。したがって、データコンテキストの設定は正常に機能します。

問題文 タブのコレクションである別のユーザー コントロール "CreateClass" があります。ここから、上記の 2 つのユーザー コントロール (非表示のタブ) に移動できます。

データコンテキストは、CreateClassViewModel の「CreateStudentManager」と「CreateTeacherManager」の 2 つのプロパティによって設定されます。

これは正常に動作しますが、問題は、デフォルトで CreateClass UI を開くと、他のユーザー コントロールも読み込まれることです (デフォルトのコンストラクターがあるためだと思います)。

CreateClass を開いたときに、他のコントロールをロードしたくないからです。これらは、Create Class UI から明示的に呼び出された場合にのみロードする必要があります。

これを達成する方法は?

以下は、1 つの「CreateStudent」のサンプルです。

<TabItem Header="Students" Visibility="{Binding IsStudentVisible, Converter={StaticResource BooleanToVisibilityConverter}}" >
                <Grid>
                    <local:UCCreateStudent DataContext="{Binding CreateStudentManager}"/>
                </Grid>
            </TabItem>
  • ギリヤ
4

2 に答える 2

0

最も簡単なのは、コードで行うことです。local:UCCreateStudent アイテムを目的のイベント トリガーのグリッドに追加します。グリッドに名前を付けます (例: x:Name="MyGrid")。

 void OnTrigger(...)
 {
      UCCreateStudent NewStudent = new UCCreateStudent();
      // extra code for setting the datacontext and any other layout properties
      MyGrid.Children.Add(NewStudent);
 }
于 2012-05-01T07:36:13.907 に答える