如何将一个Inline对象替换为一个段落(Windows.Document)中的另一个Inline?

时间:2018-11-14 20:42:16

标签: c# richtextbox

我正在管理一个段落来替换RichTextBox的一行(内联)。 但是作为InlineCollection的Paragraph.Inlines没有像这样的索引选择器 Paragraph.Inlines [0],我需要替换此集合中的一个项目。我怎样才能做到这一点?继续:如何替换没有索引选择器的集合中的项目。

我尝试了这个,但是他抛出了这个“'InlineCollection'元素无法插入到树中,因为它已经是树的子级了。”:

public List<ControlMessages> ControlMessages = new List<ControlMessages>();
public Paragraph PTrace = new Paragraph();

public void WriteControlMessage(string _id, string _message) {

            ControlMessage cm = new ControlMessage(_id, _message);
            ControlMessages.Add(cm);
            PTrace.Inlines.Add(cm.Line);

}

public void UpdateControlMessage(string _id, string _message) {
            ControlMessage cm = ControlMessages.Where(wh => wh.Id == _id).FirstOrDefault();
            cm.SetMessage(_message);
            PTrace.Inlines.InsertAfter(cm.OldLine, cm.Line);
            PTrace.Inlines.Remove(cm.OldLine);

}

public class ControlMessage {

        public string Id { get; set; }
        public Inline Line { get; set; }
        public Inline OldLine { get; set; }

        public ControlMessage(string _id, string _message) {

            Id = _id;
            SetMessage(_message);
        }

        public void SetMessage(string _message) {

            OldLine = Line;
            Paragraph p = new Paragraph();
            p.Inlines.Add(_message);
            Line = p.Inlines.LastInline;
        }
}

0 个答案:

没有答案