0

私はこのような階層を持っています - 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 つの方法は、マシン/コンポーネント/コントロール クラスごとに「ビュー」クラスを作成することでした。このアプローチでは、「ビュー」クラス内にデータのコピーを作成し、実際のデータと同期する必要がありました。これを行う良い方法は何ですか?

4

1 に答える 1

2

次の 2 つの CodeProject 記事が役に立ちました。

于 2008-12-24T16:39:16.917 に答える