1

1,000,000 行以上のコードベースにいくつかの WPF 機能を追加するロジスティクスを検討しています。XAML でデータバインディングと DataTemplates を使用して、さまざまなオブジェクトを簡単に表示することを検討しています。監視可能なコレクションをバインドできます: pointsListBox に、テンプレートを使用しない場合は、リスト項目に意味のある toString を提供するだけで、どこかに到達できます。テンプレートを使用してリスト項目のさまざまなプロパティを表示したいときに問題が発生します。それらはすべて DependencyProperties でなければならないというのが私の理解です。parentは単なるプロパティです。依存関係プロパティの追加はかなり複雑なようです。表示するすべてのクラスは継承する必要がありますDependencyObject使用するプロパティごとに多くのものを設定する必要があります。大規模なコードベースでは、プロパティごとにこれをすべて行う必要があるため、これは実行可能ではないようです。データバインディングが実際にどのように使用されているのか疑問に思っています.本当にすべてのクラスに大量の依存関係プロパティを追加していますか?それとももっと良い方法がありますか?

ありがとう!

    <ListBox Name="listBox1" 
             ItemsSource="{Binding Source={StaticResource points}}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="Point!"/>
                    <TextBlock Text="{Binding parent}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
4

1 に答える 1

2

テンプレートを使用してリスト項目のさまざまなプロパティを表示したいときに問題が発生します。それらはすべて DependencyProperties でなければならないというのが私の理解です。親は単なるプロパティです。依存関係プロパティの追加はかなり複雑なようです。表示するすべてのクラスは DependencyObject から継承する必要があり、使用するプロパティごとに一連のものを設定する必要があります。

本当じゃない。

依存関係プロパティを使用する、タイプを実装する必要がありますINotifyPropertyChangedが、これはバインディングを双方向で機能させたい場合にのみ必要です。この要件は、プロパティ値が変更されたときに WPF が通知を受け、UI が自動的に更新されるようにするために存在します。ただし、画面が表示されている間にプロパティ値が変化しない場合は、要件はありません (値がフィールドではなくプロパティであること以外は)。

オブジェクト内の値を表示するだけで、表示中に値が変化しない場合は、標準のプロパティで問題なく機能します。

于 2012-05-22T19:44:28.597 に答える