mvvm-light には、2 つのプロパティ作成スニペットが付属しています。「通常の」プロパティを作成するための mvvminpc。mvvmpropa を使用して、添付プロパティ (別名依存関係プロパティ) を作成します。どちらを使用するかを選択する際に何を考慮すべきかについてのガイダンスがあるかどうかを知りたいだけですか?
2 に答える
また、MVVM ライトのこれらのプロパティ トピックについてもしばらく検索してきました。以下は、MVVM ライトで提供されるプロパティ スニペットについての私の理解です。目的が異なるため、一方を他方に使用するケースは実際にはありません。
バインド可能なプロパティ- ビューが表示するデータを公開するために、ViewModel 内にバインド可能なプロパティが作成されます。
例: 従業員のコレクション、または選択した従業員情報を表示します。
依存関係プロパティ- コード スニペットに関して固有のビュー。これらのプロパティは、ビューモデル データに応じて、定数値に設定するか、データ バインディングを使用して変更できます。
例を次に示します。 textblock コントロールの "Text" プロパティは依存関係プロパティです。「Height」および「Width」プロパティも依存プロパティです。
プロパティの添付- また、より具体的にはユーザー コントロールに使用されます。このプロパティは親コントロールに追加されます。子コントロールは、これらのプロパティを使用して、親コントロール内で特定の方法で動作します。
例: Dockpanel には、Dockpanel 自体では使用されない "Dock" (アタッチされたプロパティ名) があります。内部に含まれる子によって使用され、子は次のプロパティを設定できるようになります: DockPanel.Dock="Top"。
<DockPanel>
<TextBlock Text="{Binding EmployeeName}" DockPanel.Dock="Top" />
<Button Content="Click Here" DockPanel.Dock="Bottom" />
</DockPanel>
上記のコード例では:
Bindableプロパティは EmployeeName であり、viewmodel コードのパブリック プロパティになります。
Dependency プロパティは、テキストブロックのText="" プロパティとボタンの Content="" プロパティです。
Attach プロパティは、Textblock とボタンで使用される DockPanel.Dock プロパティですが、実際には Dockpanel 自体によって公開されます。Dockpanel には .Dock コードが含まれておらず、子のみが含まれていることに注意してください。
UI コンポーネント (コントロールなど) を作成するときは、依存関係プロパティをお勧めします。バインディングの時間パフォーマンスが向上します。
ビジネス オブジェクトがある場合、または UI コントロールを持っていない/作成していない場合は、通常のプロパティが使用されます。