私はMVVMパターンを使用しているので、自分のコントロールにはViewとViewModelが含まれています。
ViewModelは、ViewbyDataContextプロパティに接続されています。これにより、バインディングに問題が発生します。なんで?
この状況を想定します。
新しいユーザーコントロールを作成しました。たとえば、「SuperTextBox」です。プロパティ「SuperValue」があります。
そして今、私はそのようなことをします:
<Window>
<Window.DataContext>
<vm:WindowViewModel/>
</Window.DataContext>
<local:SuperTextBox SuperValue="{Binding Test}"/>
</Window>
「バインディングプロセス」はSuperTextBox.SuperValueをWindow.DataContext.Testと結合すると思いましたが、「バインディングプロセス」はSuperTextBox.SuperValueとSuperTextBox.DataContext.Testを結合します。私にとって不自然で誤解を招くものです。
「TextBox」のような他のコントロールは、DataContextがないため、上記の方法で使用できます。
MVVMパターンを使用して、(親コントロールのDataContextへの)自然なバインディングを維持するUserControlを作成するにはどうすればよいですか?
編集:
私は親にどのように拘束するかについて多くの答えを得ました、しかし私はこれを以前に知っています。問題は、MVVMパターン(ViewModelを持つ)を介してUserControlを作成し、自然なバインディングを維持するにはどうすればよいかということです。デフォルトでは、親のDataContextになります。
ViewMoldelが欲しいのですが、それでも次のようにバインドできます。
<local:SuperTextBox SuperValue="{Binding Test}"/>
出来ますか?