我想为视图模型中的任何必需属性设置脏标志。我IsDirty在构造函数中初始化为 false。不幸的是,我的属性中的所有设置器都是在构造函数之后调用的。有没有办法IsDirty在所有设置器之后将其设置为 false?二传手都有一条线IsDirty=true;
我将 Prism 框架与 Xamarin 4.0 一起使用,但 Prism 文档没有有关 ViewModel 生命周期的任何内容。
我的编辑构造函数如下所示:
public SomeDetailsViewModel(INavigationService navigationService) : base(navigationService)
{
Sample = new SampleDTO();
InitializeLookupValues();
_samplesService = new SampleService(BaseUrl);
TextChangedCommand = new Command(() => OnTextChanged());
AddSampleCommand = new Command(() => AddCurrentSample());
CancelCommand = new Command(() => Cancel());
IsDirty = false;
}
编辑3:
构造函数调用InitializeLookupValues(). 这些似乎是罪魁祸首。
private async Task InitializeLookupValues()
{
App app = Prism.PrismApplicationBase.Current as App;
string baseUrl = app.Properties["ApiBaseAddress"] as string;
_lookupService = new LookupDataService(baseUrl);
int TbId = app.CurrentProtocol.TbId;
int accessionId = CollectionModel.Instance.Accession.AccessionId;
Parts = await _lookupService.GetParts(accessionId);//HACK
Containers = await _lookupService.GetSampleContainers(TbId);
Additives = await _lookupService.GetAdditives(TbId);
UnitsOfMeasure = await _lookupService.GetUnitsOfMeasure();
// with a few more awaits not included.
}
退出构造函数后,每个属性都会被设置。他们看起来像这个。
public ObservableCollection<PartDTO> Parts
{
get
{
return parts;
}
set
{
SetProperty(ref parts, value);
}
}
private PartDTO part;
public PartDTO SelectedPart
{
get
{
return part;
}
set
{
SetProperty(ref part, value);
IsDirty = true;
}
}
其中 IsDirty 定义如下:
private bool isDirty;
public bool IsDirty
{
get
{
return isDirty;
}
set
{
SetProperty(ref isDirty, value);
Sample.DirtyFlag = value;
}
}
慕码人2483693
慕田峪7331174
相关分类