【问题标题】:WPF RichTextBox tokenized editingWPF RichTextBox 标记化编辑
【发布时间】:2017-09-19 21:22:00
【问题描述】:

我正在尝试使用户能够使用 RichTextBox 控件编辑文本的特定部分(并且仅限于那些部分)。

我的方法包括在FlowDocument 中使用InlineUIContainer 标记中包含的TextBox 控件。下面的代码显示了我到目前为止所完成的工作:

<RichTextBox IsDocumentEnabled="True">
    <FlowDocument>
        <Paragraph>
            <InlineUIContainer >
                <TextBox Text="Field" MinWidth="65"></TextBox>
            </InlineUIContainer>
            <InlineUIContainer>
                <TextBlock Text="Some text..." ></TextBlock>
            </InlineUIContainer>
        </Paragraph>
    </FlowDocument>
</RichTextBox>

这样做的问题是用户能够选择FlowDocument 中的元素并删除它们......更糟糕的是,他们可以编辑属于Run 元素的任何文本,甚至可以剪切/粘贴文本文件。

我有在RichTextBox 上设置IsReadOnly="True" 的想法,但这也会禁止编辑文本框...我也可以处理 PreviewKeyDown 但不能处理所有情况(即:右键单击并按下粘贴)。

我想知道是否有任何替代解决方案甚至替代库或第三方控件可以提供帮助。

【问题讨论】:

    标签: c# wpf richtextbox


    【解决方案1】:

    TextBoxIsReadOnly属性设置为false,将RichTextBoxIsReadOnly属性设置为true怎么样?:

    <RichTextBox IsDocumentEnabled="True" IsReadOnly="True">
        <FlowDocument>
            <Paragraph>
                <InlineUIContainer >
                    <TextBox Text="Field" MinWidth="65" IsReadOnly="False"></TextBox>
                </InlineUIContainer>
                <InlineUIContainer>
                    <TextBlock Text="Some text..." ></TextBlock>
                </InlineUIContainer>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>
    

    【讨论】:

    • 不错。我没想到IsReadOnly 是一个继承属性,但它确实是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2016-06-01
    • 2011-08-13
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多