在我的项目中我有一个名为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 )
}
* - >在这里我需要关闭子窗口..如何关闭它..
答案 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");
}
注册是子窗口类型。 希望这会有所帮助,
维拉德