2011-01-13 20 views
0

値を追加:MSDN私に提案されているようWPF - バインド可能な読み取り専用依存関係プロパティを公開し、内部的に私のコードザッツ

1)私はそれをDependencyPropertyKeyを作ったので:私はここ2つの問題を抱えている

public static readonly DependencyPropertyKey ItemsSourceKey = 
      DependencyProperty.RegisterReadOnly("ItemsSource", typeof(List<string>), typeof(MyTextBox), null); 


     public static readonly DependencyProperty ItemsSourceProperty = ItemsSourceKey.DependencyProperty; 
     public List<string> ItemsSource 
     { 
      get { return (List<string>)GetValue(ItemsSourceProperty); } 
     } 

私のXAMLのItemsSourceはもう見えません。

2.)ユーザーは、MyTextBoxコントロールのItemsSourceで現在の文字列を取得するリストにバインドできる必要があります。 MyTextBoxの内部でItemsSourceに文字列を追加したいが、Listのインスタンスを作成し、それをReadOnlyとしてItemsSourceに割り当てることはできません。

どうすれば解決できますか?内部的にデータを設定できるバインド可能なreadonlyプロパティが必要です。たぶんあなたは、.Textプロパティを使用してそこにバインドしない理由を尋ねるかもしれません。ユーザーがデータを入力すると、変更してリストに変更して返信したい...

答えて

0

どうすれば解決できますか? バインド可能なreadonlyプロパティI が内部でデータを設定できるプロパティが必要です。たぶんあなたは なぜ私は.Textプロパティを使用しないでください そこにバインドしてください。あなたはちょうどあなたがそのためにコンバータを使用することができ、あなたのデータを変更する必要がある場合はまあ、ユーザはデータ、私はそれを変更し、それリストで変更 を返すようにしたい ...

に入ります。

1

この問題は、2つの個別のプロパティ、ItemsSource for Binding、Itemを実際のデータの表示に使用される読み取り専用コレクションオブジェクトとして使用してItemsControlで解決されます。 ItemsControlはすでにこれらのコレクションの接続を処理し、必要な更新をすべて行っているので、この動作が必要な場合はItemsControlから派生する必要があります。 ItemsControlとTextBoxの両方の動作が必要な場合は、両方のコンポジットであるコントロールを作成し、プロパティを内部コントロールに渡すか、互いに関連する2つの関連する派生コントロール(1つのItemsControl、1つのTextBox)を作成します。

+0

どこでもItemsControlは使用しません! – Pascal

+0

Johnは、ItemsControlがコピー可能な参照であることを意味していました。 –

+0

私は今、自分のItemsSource Dep Prop。タイプリーフであり、より多くのロジックを含むすべてのTextChangeを更新しています。 – Pascal

関連する問題