実行時にメイン ルール セットに新しい Keywords オブジェクトを追加します。ただし、これらのキーワードを除いて、他のルールは適切に色付けされています。
実行時にロードされた単語が強調表示されない理由を誰か説明できますか?
using (Stream stream = typeof(Window1).Assembly.GetManifestResourceStream("testAvalonEdit.MyLang.xshd")) {
using (XmlReader reader = new XmlTextReader(stream)) {
xshd = HighlightingLoader.LoadXshd(reader);
customHighlighting = HighlightingLoader.Load(xshd, HighlightingManager.Instance);
updateStandardParametersList();
}
}
HighlightingManager.Instance.RegisterHighlighting("MyLang Highlighting", new string[ { ".s" }, customHighlighting);
ここで、強調表示されているメソッドは次のとおりです。
void updateStandardParametersList() {
//find existing color. It exists for sure.
XshdColor existingColor = xshd.Elements.OfType<XshdColor>().Where(xc => string.Equals(xc.Name, "StandardParametersColor", StringComparison.CurrentCultureIgnoreCase)).First();
XshdKeywords newKeyWords = new XshdKeywords();
newKeyWords.ColorReference = new XshdReference<XshdColor>(existingColor);
//I add new words to the Keywords object
for(int i = 1; i < 25; i++)
newKeyWords.Words.Add("A000" + i.ToString("00"));
for(int i = 1; i < 25; i++)
newKeyWords.Words.Add("B000" + i.ToString("00"));
for(int i = 1; i < 5; i++)
newKeyWords.Words.Add("C0000" + i);
XshdRuleSet mainRuleSet = xshd.Elements.OfType<XshdRuleSet>().Where(o => string.IsNullOrEmpty(o.Name)).First();
mainRuleSet.Elements.Add(newKeyWords);
}
ありがとう!
更新 1
ダニエルの提案を試した後、
xshd = HighlightingLoader.LoadXshd(reader);
updateStandardParametersList();
customHighlighting = HighlightingLoader.Load(xshd, HighlightingManager.Instance);
私はこの例外を受け取ります:
では、なぜこの例外がスローされるのでしょうか。私がやろうとしているのは、Keywords
オブジェクトを追加し、その色を XSHD で定義済みの色に設定することだけです。
または、それは正しい方法ではありませんか?