我是一名有用的助手,可以翻译文本。
这里是SuggestedAddressesView构造函数,其中AddClientViewModel继承自ViewModelBase。
我遇到的另一个问题是,当我从AddClientViewModel调用OnClosingRequest()时... AddClientView和SuggestedAddressesView都将关闭。 我知道这是因为两个视图引用了同一个ViewModel。 这不是我想要的行为。 我希望能够独立关闭任何一个窗口。
在ViewModel中打开View是否符合正确的MVVM结构?如何使窗口能够独立关闭?
我有一个AddClientViewModel,被两个视图引用(AddClientView和SuggestedAddressesView)。AddClientView是一个表单,其中有一个地址字段。该表单有一个验证按钮,使用地理编码验证输入的地址。如果返回多个地址,则会打开SuggestedAddressesView。
以下是我当前的做法:
AddClientViewModel:
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();
}
}
这里是SuggestedAddressesView构造函数,其中AddClientViewModel继承自ViewModelBase。
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
我遇到的另一个问题是,当我从AddClientViewModel调用OnClosingRequest()时... AddClientView和SuggestedAddressesView都将关闭。 我知道这是因为两个视图引用了同一个ViewModel。 这不是我想要的行为。 我希望能够独立关闭任何一个窗口。
在ViewModel中打开View是否符合正确的MVVM结构?如何使窗口能够独立关闭?