依存関係プロパティとしてIMailAddress
プロパティが公開されていることをユーザーコントロールで公開すると、完全に有効です。 WPF自体も同様のことを行います。たとえば、ItemsControl
は、コレクションにコレクションをバインドすることを想定しているため、タイプIEnumerable
のItemsSource
依存プロパティが公開されています。
ユーザーコントロールは、/カスタムコントロールは、ビューを表現するための良い方法であり、MVVMのfreakazoidsがない理由は、これがMVVMと完全に正常に動作することはできませんありません、そうでない場合は:)他にあなたを教えてはいけない - 例えば:
<local:MailAddressEditor
MailAddress="{Binding Path=Customer.BillingAddress}"
/>
あなたが見たいと思うことの1つは、UserControlではなくCustom Controlです。これにより、アドレスの編集の背後にあるロジックに焦点を当てた「見た目のない」コントロールを構築し、コントロールのユーザーが独立してスタイルを作成してコントロールをレンダリングできるようになります。人々があなたのコントロールを使用すると、彼らが使用する可能性があります:
<local:MailAddressEditor
MailAddress="{Binding Path=Customer.BillingAddress}"
Style="{StaticResource SimpleInlineAddressEditor}"
/>
<local:MailAddressEditor
MailAddress="{Binding Path=Customer.BillingAddress}"
Style="{StaticResource ComplicatedAddressEditorWithGoogleMapsSelector}"
/>
をこの場合、私たちは、一つの制御を持っている2つのスタイル(そしておそらく2 ControlTemplates)でフィールドに異なるレイアウトを提供します。
カスタムコントロールは、WPF開発者にとって大きな資産です。すべてをMVVM経由で行う必要はありません。あなたのカスタムコントロールに入るコードを意識してください。ちょっと論理的になってしまったら、そのうちのいくつかをビューモデルに移したいかもしれません。