我有一个被 2 个视图(AddClientView 和 SuggestedAddressesView)引用的 AddClientViewModel。AddClientView 是一个包含地址字段的表单。该表单有一个验证按钮,该按钮使用地理编码验证输入的地址。如果返回多个地址,则会打开 SuggestedAddressesView。
这是我目前的做法:
添加客户端视图模型:
private void ValidateExecute(object obj)
{
SuggestedAddresses = new ObservableCollection<DBHelper.GeocodeService.GeocodeResult>(GeoCodeTest.SuggestedAddress(FormattedAddress));
....
if (SuggestedAddresses.Count > 0)
{
var window = new SuggestedAddressesView(this);
window.DataContext = this;
window.Show();
}
}
这是 AddClientViewModel 从 ViewModelBase 继承的 SuggestedAddressesView 构造函数
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
我遇到的另一个问题是当我从 AddClientViewModel 调用 OnClosingRequest() 时……AddClientView 和 SuggestedAddressesView 都关闭了。我知道会发生这种情况,因为两个视图都引用了相同的 ViewModel。这不是我想要的行为。我希望能够独立关闭任一窗口。
是否从 ViewModel 正确的 MVVM 结构打开视图,我将如何能够独立关闭窗口?