0

と を使用WPF + MVVMprismていunityます。menu" "、" "、" " のmain3つの領域がありfooterます。ここで、領域" " からfooterViewModel(領域 " footer")にプロパティを設定したいと思います。このプロパティは に表示されます。change イベントは機能しますが、 の を更新しません。MainViewModelmainfooterViewtextboxview

誰かが私を助けてくれることを願っていますか?

前もって感謝します。

これは私の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());
  }

}

注意:_applicationstatic 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"/>
4

1 に答える 1