0

こんばんは!

ObservableCollection 型の依存関係プロパティとその適切なラッパーを追加した WPF 拡張ツールキットの richTextBox から継承したクラスがあります。このプロパティを使用して、FlowDocument に追加した InlineUIContainers のテキストを格納し、それらを ObservableCollection 変数にデータ バインドしたいと考えています。

私の問題は、この richTextBox のすべてのインスタンスがデータを同じ場所 (シングルトン) に格納することです。

List を使用して、コンストラクターでプロパティを初期化してみました (以下のコード サンプルのように) - SetValue も使用します。FrameworkMetadataProperty のデフォルト値を null に設定しましたが、まだ運がありません (この場合、アイテムを追加しようとすると、実際には「オブジェクトが初期化されていません」というエラーが表示されます)。

アイデアが尽きた。過去 2 時間、Google で検索してきましたが、インスタンスが個別に値を保存していない理由がまだわかりません。

どんな助けでも大歓迎です。

public class RichTextBoxWithDataBoundableTokens : Xceed.Wpf.Toolkit.RichTextBox
{ 
    public static readonly DependencyProperty TokensContentsProperty = DependencyProperty.Register("TokensContents", typeof(ObservableCollection<object>), typeof(RichTextBox), new FrameworkPropertyMetadata(new ObservableCollection<object>()));
    public ObservableCollection<object> TokensContents { get { return (ObservableCollection<object>)GetValue(TokensContentsProperty); } set { SetValue(TokensContentsProperty, (ObservableCollection<object>)value); } }

    public RichTextBoxWithDataBoundableTokens()
        : base()
    {
        TokensContents = new ObservableCollection<object>();
    }
}

これが私がコントロールを使用する方法です:

    RichTextBoxWithDataBoundableTokens test = new RichTextBoxWithDataBoundableTokens()
    test.TokensContents.Add("some object"); 
4

1 に答える 1

0

こんにちは、Register メソッドで typeOf(RichTextBox) の代わりに typeOf(RichTextBoxWithDataBoundableTokens ) を設定します。これが役立つことを願っています。

于 2012-07-14T17:47:58.550 に答える