我正在WPF + MVVM
使用prism
和unity
。我有三个区域“ menu
”、“ main
”和“ footer
”。现在我想在区域“”中设置footerViewModel
(区域“ footer
”)MainViewModel
中的属性main
。此属性应显示在footerView
. 更改事件有效,但不会更新textbox
.view
我希望有一个人可以帮助我?
提前致谢。
这是我的MainViewModel
:
private CodingGuidline _selectedGuidline;
public CodingGuidline SelectedGuidline {
get { return _selectedGuidline; }
set
{
_selectedGuidline = value;
OnPropertyChanged(() => SelectedGuidline);
OnUpdateAppCodingSpecification(this, EventArgs.Empty);
}
}
private async void OnUpdateAppCodingSpecification(object sender, EventArgs args)
{
try
{
Task<CodingGuidline> result = CodingRepository.GetCodingSpecification(SelectedGuidline.Guid);
_application.CurrentGuidline = await result;
_container.Resolve<FooterViewModel>().OnUpdateCodingGuidline(this, EventArgs.Empty);
}
catch (Exception exception)
{
MessageBox.Show(exception.ToString());
}
}
注意:_application
是static object
提供共享信息的
页脚视图模型:
public FooterViewModel(IUnityContainer container)
{
_container = container;
_application = _container.Resolve<IApplication>();
AssemblyVersion = "Version: " + Assembly.GetExecutingAssembly().GetName().Version;
WebserviceUrl = "Host: " + _application.WebserviceUrl;
UpdateCodingGuidline += OnUpdateCodingGuidline;
}
public event EventHandler UpdateCodingGuidline;
public void OnUpdateCodingGuidline(object sender, EventArgs args) {
if (_application.CurrentGuidline != null)
{
CurrentCodingSpecification = _application.CurrentGuidline.SequenceNumber + " " + _application.CurrentGuidline.Name;
}
else
{
CurrentCodingSpecification = " - ";
}
}
private string _currentCodingSpecification;
public string CurrentCodingSpecification {
get {
return _currentCodingSpecification;
}
set {
if (value != _currentCodingSpecification) {
_currentCodingSpecification = value;
OnPropertyChanged(() => CurrentCodingSpecification);
MessageBox.Show(CurrentCodingSpecification.ToString());
}
}
}
出现Messagebox
但view
不显示变化。
绑定FooterView
:
<StatusBarItem Content="{Binding CurrentCodingSpecification, Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Center" Width="200"/>