如何从Silverlight MVVM中的ViewModel关闭ChildWindow?

时间:2013-02-26 10:19:03

标签: entity-framework mvvm silverlight-5.0

在我的项目中我有一个名为login.xaml的登录页面,我有使用MVVM方法的loginViewModel.cs。开始时我在我的代码隐藏页面(login.xaml.cs)中写了这个.dialogResult = true使用代码意味着它关闭了子窗口..在这里我需要从viewmodel(loginviewmodel)关闭childwindow(login.xaml)。

login.xaml:

private void btnLogin_Click(object sender, RoutedEventArgs e)
        {

            if (txtuser.Text.Trim() != "" && txtpass.Password != "")
            {
                (DataContext as LoginViewModel).UserValidation(txtuser.Text.Trim(),txtpass.Password.Trim());
            }
        }

loginviewmodel.cs:

public void UserValidation(string name, string pass)
        {
            IsBusy =true;
            uname=name;
            pword=pass;
            // ----* (Follow * for the continuation )

        }

* - >在这里我需要关闭子窗口..如何关闭它..

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题并解决了......所以我有了我的子窗口和按钮取消:

<Button x:Name="CancelButton" Content="Cancel" Command="{Binding CancelCommand}" CommandParameter="{Binding ElementName=SignUpPopup}" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1"/>

我做的是通过ExecuteCancelCommand参数param传递对象Child Window - Name =“SignUpPopup”。在视图模型中你有:

public void ExecuteCancelCommand(object param)
        {
            (param as Signup).Close();
           // MessageBox.Show("Window should close now");
        }

注册是子窗口类型。 希望这会有所帮助,

维拉德