と を使用WPF + MVVM
しprism
ていunity
ます。menu
" "、" "、" " のmain
3つの領域がありfooter
ます。ここで、領域" " からfooterViewModel
(領域 " footer
")にプロパティを設定したいと思います。このプロパティは に表示されます。change イベントは機能しますが、 の を更新しません。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"/>