我正在开发一个使用NavigationWindow
的应用程序,如下所示:
NavigationWindow
为Mainwindow
。
Page0.xaml
在DataGrid's
scenairo中有Master Detail
(dgMaster和dgDetail)。
Window1.xaml
将在dgDetails' ShowDialog()
事件设置器中显示为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();
}
以上代码一起显示Window
为DialogBox
,但DataGrid
为空。如何加载ItemsSource
活动中DataGrid
的{{1}}的{{1}}?
我知道这些控件分别属于每个xaml文件,但有一种方法可以显示来自另一个xaml的控件datacontext(无论页面/窗口如何)。
如果有人不理解这个问题。请让我知道..我会尝试更好地解释它。
答案 0 :(得分:1)
如果我理解正确,问题是在窗口中加载gridview。 在这种情况下,一个选项是在窗口中创建公共集合(列表),并使用此公共列表设置dg3的项目源。
public List<String> source {set;get}
在构造函数
中Window()
{
\\initialize
dg3.ItemSources=source;
}
当dgdetail选择发生变化时,在窗口中为dgdetail中的集合指定列表。
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).ToList();
my_Window.source =查询1;
}
答案 1 :(得分:1)
您正在使用选择更改事件,但您正在使用ShowDialog()打开window.xaml,
ShowDialog()将锁定页面,因此无法更改选择,
如果您正在使用ShowDialog()并希望在对话框中显示,为什么不通过Paramater(我认为它是:
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();
}
您需要访问页面和窗口中的数据,您应该将EF移动到一个数据层,这个数据层都可以访问上下文,如果您只是将查询结果列表传递给Window构造函数
您还应该为Window.xaml选择一个不同的名称,以避免混淆,因为您与Window冲突并因此拥有Window1,