了解しました。これは、この質問にいくらか関連しています。WPF単一のビューモデルから複数のページを印刷する
私はそこで与えられたアドバイスに従おうとしましたが、今は行き詰まっています。
私のアプリケーションはMainView.xamlと適切なMainViewViewModel.csを使用しており、バックグラウンドでMVVMLightを使用しています。
今-投稿によると-私は次のことをしなければならないようです:
- ユーザーコントロールを作成する
- ユーザーコントロールからいくつかのプロパティを公開する
- ビューモデルにこれらのプロパティが表示されていることを確認してください
アイデアは明確ですが、お互いに通知しようとすると行き詰まります。
私のユーザーコントロール(UcTest.xaml)は、依存関係プロパティを公開しています。
public string SpecialText
{
get { return (string)GetValue(SpecialTextProperty); }
set
{
SetValue(SpecialTextProperty, value);
}
}
// Using a DependencyProperty as the backing store for SpecialText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SpecialTextProperty =
DependencyProperty.Register("SpecialText", typeof(string), typeof(UcTest), new PropertyMetadata(new PropertyChangedCallback(SpecialTextChangedPropertyCallback)));
private static void SpecialTextChangedPropertyCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
// Do something
Debug.WriteLine("Ffgdgf");
}
了解しました。これで、いくつかの依存関係プロパティを持つユーザーコントロールができました。ただし、これらのプロパティは、私のViewModelプロパティから完全に分離されています(これらは表示されるプロパティです)。
つまり、基本的に2つの可能性があります。
- 一部のプロパティが変更されたことをUserControlのViewModelに伝えるにはどうすればよいですか?
- 依存関係のプロパティを忘れて、ビューモデルに直接アクセスする可能性はありますか?
追加情報#1:私がここでやろうとしていることの(簡単な)例をアップロードしました:サンプルプロジェクト。MainViewViewModelからUserControl1のラベルの値を(UserControl1のViewModelのバインディングプロパティを介して)変更したいと思います。