私は、データ表示にユーザーコントロールを使用しているデータ(MVVMモデル)にバインドされたTreeViewを持っています。TreeViewItemからユーザーコントロールを取得できますか?
<HierarchicalDataTemplate
DataType="{x:Type vm:SiteViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<uc:MyUserControl x:Name="control1" Text="{Binding SiteName}" />
</StackPanel>
</HierarchicalDataTemplate>
アイテムが選択されている場合、ユーザーコントロール自体にアクセスする必要があります。
私は、TreeViewItem.Headerを使用していましたが、私が欲しいものに似た何かをする例を見つけました。私のコードでは、バインディングのために、TreeViewItem.HeaderはSiteViewModelオブジェクトです。
(MyUserControl型の)実際のユーザーコントロールをTreeViewItem自体から簡単に取得する方法はありますか?
ありがとうございました。
なぜコントロールにアクセスする必要がありますか?代わりに、コントロールのビューモデルにアクセスしてそのモデルを変更できないのはなぜですか? –
プロパティを設定するにはコントロールにアクセスする必要があります。ユーザーコントロールは、TextBlockとTextBoxの表示を切り替えるので、TreeViewで「インプレース」編集を行うことができます。それはとにかく計画ですが、私はそれが私のために少し進んでいるかもしれないと思うようになっています!おそらくこれを達成するためのよりよい方法があります。 –
はい、MVVMを見てください。これにより、ビュー自体ではなくモデルを操作することができます。このビューは、データバインド/トリガーによるモデルの変更に応答します。 –