私はこのような階層を持っています - Factory>machines>components>controls where ">" は "contains a list of" と読むことができます。
これは、HierarchicalDataTemplates を使用する TreeView に非常にうまく適合します。ここで、ユーザーが制御を必要とするツリーの「ビュー」を作成できるように、ツリーにチェックボックスを追加したいとします。現在、私のテンプレートは、実際のマシン/コンポーネント/コントロール オブジェクトにデータ バインドされています。
<HierarchicalDataTemplate DataType="{x:Type src:Component}" ItemsSource = "{Binding Path=Controls}">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="False" />
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
「ビュー」の作成を処理できるように、マシン/コンポーネント/コントロール クラスのコードを変更したくありません。つまり、「データ モデル」コードと UI コードを分けておきたいということです。たとえば、チェックボックスを処理するには、コントロールの IsSelected プロパティにバインドする必要があります。これらのクラスに一連のプロパティと通知コードを追加していることに気付きました。私が試したもう 1 つの方法は、マシン/コンポーネント/コントロール クラスごとに「ビュー」クラスを作成することでした。このアプローチでは、「ビュー」クラス内にデータのコピーを作成し、実際のデータと同期する必要がありました。これを行う良い方法は何ですか?