收录日期:2019/11/19 16:33:27 时间:2016/07/26 19:55:46 标签:WPF/Silverlight
主窗体是Silverlight用户控件页面也就是(.xaml文件),弹出的是Silverlight子窗体(ChildWindow.xaml)
当前情况:1.点击子窗体中的“确定”和“右上角关闭按钮”的时候刷新父窗体(父窗体是一个datagrid数据列表) 
              2.为了便于传参数,本人将子窗体的ChildWindow()函数重写了,也就是加了一个实体参数,方便弹出子窗体的时候加载数据,本人以前是搞bs的,突然间搞sl,有些问题可能提的比较傻,看帖的别sb的骂啊

谢谢
官方帮助文档上的例子,希望楼主能看得明白

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            LoginWindow loginWnd = new LoginWindow();
            loginWnd.Closed += new EventHandler(loginWnd_Closed);
            loginWnd.Show();
        }
        void loginWnd_Closed(object sender, EventArgs e)
        {
            LoginWindow lw = (LoginWindow)sender;

            if (lw.DialogResult == true && lw.nameBox.Text != string.Empty)
            {
                this.helloTxt.Text = "Hello " + lw.nameBox.Text;
            }
            else if (lw.DialogResult == false)
            {
                this.helloTxt.Text = "Login canceled.";
            }
        }
    }

    public partial class LoginWindow : ChildWindow
    {
        public LoginWindow()
        {
            InitializeComponent();
        }
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }
        private void ChildWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (this.DialogResult == true && 
                    (this.nameBox.Text == string.Empty || this.passwordBox.Password == string.Empty))
            {
                e.Cancel = true;
                ChildWindow cw = new ChildWindow();
                cw.Content = "Please enter name and password or click Cancel.";
                cw.Show();
            }
        }
    }



要注意的是 ChildWindow.Show() 不是模态的,千万不要在其下方摆放语句。
引用 1 楼 sunpire 的回复:
官方帮助文档上的例子,希望楼主能看得明白

C# code

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }
        private void But……



这个例子我明白,但是我现在想在关闭子窗体的时候加载UserControl_Loaded(object sender, RoutedEventArgs e)这个函数,也就是把数据重新加载一次,但是加载的时候我不知道这个RoutedEventArgs 参数怎么写填写,因为loginWnd_Closed(object sender, EventArgs e)
里面没有那个参数
mark this thread
mark this thread
楼主的描述比较晦涩,是不是想实现:

主Win --> 传递实体实例 给 ChildWin --> ChildWin 中修改这个实体实例(如从WCF端获取数据)
--> 关闭ChildWin --> 用该实体实例刷新主Win 中的显示?

如果是这样,大致有两种简单的方法:
1. 根本就不用什么操作, Object实例是引用传递的,只要主Win中是使用 Binding 来呈现实体实例的,
并且是使用OneWay或TwoWay绑定,那么在ChildWin中改变了这个实例时,主Win中的呈现是自动更新的;

2. 在ChildWin中把这个实体实例重新公开为一个属性就可以了,如 属性EntityA ,
这样在

        void loginWnd_Closed(object sender, EventArgs e)
        {
            LoginWindow lw = (LoginWindow)sender;

            // 可以任意访问 lw.EntityA 
        }


这种方法是最常用的,因为可能是在 ChildWin 中根据参数得到一个全新的实体实例,而不是从 主Win 传入一个实体实例。
很简单 你直接把datagrid再绑定一次  局部刷新

通过一个结果集更新一个列的问题! 【竞猜】性丑闻爆料者张钰用身体换来了哪些角色 钱能p168字符串常量的例子 菜鸟入门,超简单问题 庆祝个人生日,散分,散分……到的恭喜下 未解之谜,ASP.NET 2.0内的报表打印... 在MDI窗口的问题?在MDI里打开一个子窗口,如何同时在MENUITME里加一个这个窗口的快捷MENU EXCEL中快捷输入的编程序方法? 求助一个常见的难题 isa 2004的问题! 求助 Java里面怎么实现swap installshield制作的安装文件安装完后怎么自动重启动了? 求助:如何合理选择各种窗口类? 求助一个常见的难题 问个sizeof的问题 3个isupper函数 为什么我的jsp文件不能在eclipse中被保存? 有谁用过DLL2Lib?? 100分求,视频文件加密的问题!!!! 一个简单的问题,对话框的显示 请问CRC中的衍生多项式如何确定? 哪里有<>的电子书下载 Cookie更新问题 再问个问题,不过没分了. Struts怎么显示主从表数据 如何查看指定的进程的情况? 准备做一个大型购物网站,需要建几个表 在windows xp上,搜索c:\\windows目录(包括子目录)中是否包含有java.exe文件,如果有,请打印出所有java.exe的完整路径。我想实现这个功 如何删除注册表中值不为空的项。