我是WPF和MVVM的初学者。 我有一个简单的wpf窗口,我在其中添加2个值。我正在使用命令绑定 在添加按钮。
这是我的按钮
的xaml代码<Button Content="OK" Name="btn_OK" Command="{Binding AddShutterType}" />
这个命令写在我的视图模型中,我也在做一些验证 但我的问题是如果验证失败或成功我的窗口没有关闭! 如果我给“this.close”窗口按钮单击事件,则它总是关闭。 我的要求是在验证失败时保留窗口,如果验证成功则关闭。怎么做?
这是我的视图模型代码,其中包含验证部分。
private ICommand _AddShutterType;
public ICommand AddShutterType
{
get
{
if (_AddShutterType == null)
{
_AddShutterType = new DeligateCommand.DelegateCommand(delegate()
{
ShutterNameToAdd.Trim();
ShutterCodeToAdd.Trim();
StringBuilder SB = new StringBuilder();
if (ShutterCodeToAdd == "")
{
SB.Remove(0, SB.Length);
SB.Append("Please type in a Code for the shutter.");
throw new ArgumentException(SB.ToString());
}
if (ShutterCodeToAdd.Length > 10)
{
SB.Remove(0, SB.Length);
SB.Append("Shutter type code size cannot be more than 5");
throw new ArgumentException(SB.ToString());
}
if (ShutterNameToAdd == "")
{
SB.Remove(0, SB.Length);
SB.Append("Please type in a Name for the shutter.");
throw new ArgumentException(SB.ToString());
}
Model.AddShutterType(ShutterCodeToAdd, ShutterNameToAdd);
});
}
return _AddShutterType;
}
}
请任何人帮助我..
答案 0 :(得分:0)
我的解决方案是在vm中保存视图的引用,但它将是一个接口;
例如
public View : UserControl, IView
{
void IView.Close()
{
this.Close();
}
}
public ViewModel
{
public IView View{get;set;}
public void CommandImpl()
{
if (Validated())
View.Close();
}
}
希望这有帮助。