刷新主窗口内的子Usercontrol后,WPF Mainwindow自动关闭

时间:2014-08-22 04:44:22

标签: wpf xaml showdialog

我正在开发包含MainWindow.xaml作为容器的WPF应用程序来显示Mainwindow中的所有用户控件。我已经定义了Mainwindow.xaml中的所有菜单,并在mainwindow.xaml网格中显示了相应的usercontol。

下面是我的Mainwindow网格定义和相应的代码隐藏事件处理程序代码

<Grid x:Name="Container" Grid.Column="0"  Width="0" Margin="0,0,0,10" Visibility="Visible">           
</Grid>

“菜单后面的代码”单击“事件处理程序”

登录后加载maindow时,它将调用并显示CustomerListView用户控件

private void Window_Loaded(object sender, RoutedEventArgs e)
{       
    CustomerListView CLView = new CustomerListView ();
    Container.Children.Clear();
    Container.Children.Add(CLView );
    Container.Children[0].SetValue(WidthProperty, CLView.Width);
    Container.Children[0].SetValue(HeightProperty, CLView.Height);    
}

//客户菜单点击活动

public void NewCustomer_Menu_Click(object sender, RoutedEventArgs e)
{
    //AddCustomer is User control
    AddCustomer AddEmployeeObject = new AddCustomer();

    Container.Children.Clear();
    Container.Children.Add(AddEmployeeObject);
    Container.Children[0].SetValue(WidthProperty, AddEmployeeObject.Width);
    Container.Children[0].SetValue(HeightProperty, AddEmployeeObject.Height);
}

一切正常,直到我通过新的登录控制集成我的应用程序。成功登录后,我显示了主窗口。如果我正在做一些动作,如添加新客户(单独的用户控制)或编辑新客户(单独的用户控制),我的应用程序会自动关闭。如何克服这个问题?

登录后显示mainwinow的代码

if (IsValidUser)//Bool variable to validate user
{
    //Hide the Loginwindow
    this.Hide();
    //Display mainwindow
    MainWindow objMainWindow = new MainWindow();
    objMainWindow.ShowDialog();               
}

如果我执行任何更新或插入操作,它会在插入或更新或刷新后关闭应用程序。 似乎每次插入或更新后重新加载Maindow或尝试加载另一个用户控件或刷新主窗口网格内的用户控件。如何解决此问题?

2 个答案:

答案 0 :(得分:2)

每次通过调用Grid添加新的Customer对象时,您都在清除Container.Children.Clear()名为的容器。不要在代码中添加新控件,而是在XAML中定义UI并使用数据绑定来可视化要添加的对象。

您可以阅读以下链接:

数据绑定概述:http://msdn.microsoft.com/en-us/library/ms752347(v=vs.110).aspx ObservableCollection:http://msdn.microsoft.com/en-us/library/ms668604(v=vs.110).aspx

答案 1 :(得分:1)

Woha !!!最终得到了解决方案。我已经使用IsCancel =&#34; True&#34;定义了按钮。因此,当我提交数据时,它会关闭Mainwindow.It只是复制粘贴错误,最后删除了IsCancel属性并且工作正常。