Я не верю, что диспетчер может отправить сообщение (или задержать) обновление свойств - это хорошее решение, это скорее обходной путь, который на самом деле не нужен. Следующее решение i полностью mvvm и не требует диспетчера.
В коде представления за крючком к событию SelectionChanged и обновлению источника (то есть виртуальной машины) или цели (то есть V) в соответствии с тем, возвращал ли метод VM.ConfirmChange (...) следующее значение:
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(e.AddedItems.Count != 0)
{
var selectedItem = e.AddedItems[0];
if (e.AddedItems[0] != _ViewModel.SelectedFormatType)
{
var comboBoxSelectedItemBinder = _TypesComboBox.GetBindingExpression(Selector.SelectedItemProperty); //_TypesComboBox is the name of the ComboBox control
if (_ViewModel.ConfirmChange(selectedItem))
{
// Update the VM.SelectedItem property if the user confirms the change.
comboBoxSelectedItemBinder.UpdateSource();
}
else
{
//otherwise update the view in accordance to the VM.SelectedItem property
comboBoxSelectedItemBinder.UpdateTarget();
}
}
}
}
сделать три FultonObj
не использовать один
fuOb1.setFileNo(file1);
fuOb1.setParcelId(parcelId1);
fuOb1.setSitus(situs1);
list.add(fuOb1);
fuOb2.setFileNo(file2);
fuOb2.setParcelId(parcelId2);
fuOb2.setSitus(situs2);
list.add(fuOb2);
fuOb3.setFileNo(file3);
fuOb3.setParcelId(parcelId3);
fuOb3.setSitus(situs3);
list.add(fuOb3);
Ваша программа должна быть такой. Каждый раз, когда вы устанавливаете данные в fuOb, они отменяют предыдущие данные.
FultonObj fuOb1 = new FultonObj();
fuOb1.setFileNo(file1);
fuOb1.setParcelId(parcelId1);
fuOb1.setSitus(situs1);
list.add(fuOb1);
FultonObj fuOb2 = new FultonObj();
fuOb2.setFileNo(file2);
fuOb2.setParcelId(parcelId2);
fuOb2.setSitus(situs2);
list.add(fuOb2);