0

私は Caliburn.Micro を使用しており、コンテンツ コントロールに子 VM を使用して MainWindowViewModel をセットアップしています。メイン VM には、VM 間でプロパティを共有できる子 VM プロパティがあります。両方の VM に UserName プロパティがあります。

メイン ビューでは、ユーザー名の末尾に文字列を追加してパーソナライズしていますが、子ビューではユーザー名をそのまま表示しています。ユーザー名プロパティは、子 VM でのみ編集できますが、メイン VM では編集できません。子で編集すると、親は更新されません。これらのプロパティをバインドして、親 VM を子 VM と同期させる方法がわかりません。

メイン VM:

public string UserName
        {
            get { return string.Format("{0}'s Diary Log", DiaryViewModel.UserName); }
        }

private DiaryViewModel _diaryViewModel;
        public DiaryViewModel DiaryViewModel
        {
            get { return _diaryViewModel; }
            set
            {
                _diaryViewModel = value;
                NotifyOfPropertyChange(() => DiaryViewModel);
            }
        }

子 VM:

private string _userName = "John";
        public string UserName
        {
            get { return _userName; }
            set
            {
                _userName = value;
                NotifyOfPropertyChange(() => UserName);
            }
        }
4

1 に答える 1

0

MainView のコントロールを DiaryViewModel.UserName にバインドし、.xaml で文字列の書式設定を行うだけです。文字列フォーマットのアポストロフィをスラッシュでエスケープすることを忘れないでください。

<TextBlock Text="{Binding Source=DiaryViewModel.UserName, StringFormat='\{0}\'s Diary Log'}" />
于 2012-04-28T17:33:53.033 に答える