0

NavigationWindow次のように使用するアプリケーションを開発しています。

  1. NavigationWindowとしてMainwindow

  2. Page0.xamlシナリオに 2 DataGrid's(dgMaster と dgDetail) がMaster Detailあります。

  3. Window1.xamlこれは、次のようShowDialog()に dgDetails のRow_DoubleClick'sイベント セッターに表示されます。


Code behind

public void Row_DoubleClick(object sender, RoutedEventArgs e)
{
    Window1 my_Window = new Window1();
    my_Window.ShowDialog();
}

ポイント番号 2 のコード スニペットは次のとおりです。

// on datagrid row selection changed, it should load the ItemsSource in the Window1 datagrid. dg3 is the datagrid in Window1. 
private void dgDetails_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    this.db = new testDB_Entities();
    string IDMapper = (dgDetails.SelectedItem as Details).Name;
    var Query1 = from a in this.db.Details
               orderby a.ID == IDMapper
               select a;

    dg3.DataContext = null;
    dg3.DataContext = Query1;
    dg3.Items.Refresh();
}

上記のコードは一緒に を として表示しますWindowDialogBoxDataGridは空です。イベントからinをロードする方法はItemsSource?DataGridWindow1.xamlPage0.xaml dgDetails_SelectionChanged

これらのコントロールが各 xaml ファイルに個別に属していることは理解していますが、別の xaml からコントロールのデータ コンテキストを表示する方法はありますか (ページ/ウィンドウに関係なく)。

誰かが質問を理解していない場合。教えてください..私はそれをよりよく説明しようとします。

4

2 に答える 2

1

選択変更イベントを使用していますが、ShowDialog() を使用して window.xaml を開いています。

ShowDialog() はページをロックアウトするため、選択を変更できません。

ShowDialog() を使用していて、ダイアログに表示したいだけの場合は、単にパラメータを渡さないのはなぜですか (私はそれだと思います:

string IDMapper = (dgDetails.SelectedItem as Details).Name

ウィンドウのコンストラクターに?

public void Row_DoubleClick(object sender, RoutedEventArgs e)
{

 string IDMapper = (dgDetails.SelectedItem as Details).Name;
 Window1 my_Window = new Window1(IDMapper );
 my_Window.ShowDialog();
}

次に、Window コンストラクターまたは Loaded イベントでクエリを実行します。

Window(string IDMapper)
{
    var Query1 = (from a in this.db.Details
               orderby a.ID == IDMapper
               select a).ToList();
}

Page と Window の両方からデータにアクセスする必要があります。クエリ結果リストを Window コンストラクターに渡すだけでは失敗し、両方とも Context にアクセスできるデータレイヤーに EF を移動する必要があります。

また、Window.xaml に別の名前を選択して、Window と競合しているため、Window1 を使用しているため、混乱を避ける必要があります。

于 2013-04-24T19:39:59.277 に答える