Я использовал SharedService (Prism) для получения данных между двумя модулями.В SharedService я поместил строковое свойство с именем AdapterName.Предположим, что в модуле A есть ViewAViewModel, а в модуле B - ViewBViewModel
public class ViewAViewModel : BindableBase {
private string _adapterNameA;
public string AdapterNameA
{
get { return _adapterNameA; }
set { SetValue (ref _adapterNameA, value); }
}
private ISharedService _sharedService;
public ISharedService SharedService {
get { return _sharedService; }
set { SetValue (ref _sharedService, value); }
}
public ViewAViewModel (ISharedService sharedService) {
_sharedService = sharedService;
}
}
public class ViewBViewModel : BindableBase {
private string _adapterNameB;
public string AdapterNameB {
get { return _adapterNameB; }
set { SetValue (ref _adapterNameB, value); }
}
private ISharedService _sharedService;
public ISharedService SharedService {
get { return _sharedService; }
set { SetValue (ref _sharedService, value); }
}
public ViewBViewModel (ISharedService sharedService) {
_sharedService = sharedService;
}
}
public interface ISharedService {
string AdapterName { get; set; }
}
public class SharedService : BindableBase, ISharedService {
private string _adapterName;
public string AdapterName {
get { return _adapterName; }
set { SetValue (ref _adapterName, value); }
}
}
У меня есть текстовое поле и ViewA, и ViewB, и я хочу, чтобы значение в текстовом поле в ViewA всегда было таким же, как в ViewB.Так что мне следует изменить значение SharedService.AdapterName в AdapterNameA get, set (аналогично AdapterNameB)?
public string AdapterNameA
{
get {
_adapterNameA = SharedService.AdapterName;
return _adapterNameA;
}
set {
SetValue (ref _adapterNameA, value);
SharedService.AdapterName = value;
}
}
или связать напрямую со свойством SharedService
Text = "{Binding Path=SharedService.AdapterName, UpdateSourceTrigger=PropertyChanged}"
или другим способом?(Я пытаюсь сделать WPF MVVM с Призмой)