0

晚上好!

我有一个继承自 WPF 扩展工具包的 richTextBox 的类,我向其中添加了 ObservableCollection 类型的依赖属性和正确的包装器。我想使用这个属性来存储我添加到 FlowDocument 的 InlineUIContainers 的文本,并将它们数据绑定到 ObservableCollection 变量。

我的问题是这个richTextBox 的所有实例都将它们的数据存储在同一个地方(单例)。

我尝试使用 List,在构造函数中初始化属性(如下面的代码示例) - 也使用 SetValue。我已将 FrameworkMetadataProperty 默认值设置为 null,但仍然没有运气(在这种情况下,它实际上在尝试添加项目时给了我“对象未初始化”错误)。

我已经没有想法了。在过去的两个小时里,我一直在用谷歌搜索它,但我仍然无法弄清楚为什么这些实例没有独立存储这些值。

任何帮助是极大的赞赏。

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

您好在注册方法中设置 typeOf(RichTextBoxWithDataBoundableTokens) 而不是 typeOf(RichTextBox) 。我希望这将有所帮助。

于 2012-07-14T17:47:58.550 回答