【发布时间】:2020-07-27 13:08:12
【问题描述】:
我正在使用 RadSyntaxEditor 来实现功能,例如显示一些功能重载。但是当我需要用新的 OverloadInfoCollection 更改 overloadListWindow.Presenter.OverloadListItems 时遇到问题,UI 部分没有更改。我假设此更改不会触发 INotifyPropertyChanged,这就是 UI 未更新的原因。在某种情况下,我们像在radButton1_Click 事件处理程序中一样更改overloadListWindow.Presenter.OverloadListItems,直到我使用键盘上的箭头按钮(可能是触发INotifyPropertyChanged 事件的时间)之前没有任何更改。我试图做一些解决方法,在这种情况下我试图清除this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems,但在这种情况下,即使实例不为空,我也会得到 NullReferenceException。
using System;
using System.Windows.Forms;
using Telerik.WinForms.Controls.SyntaxEditor.UI;
using Telerik.WinForms.Controls.SyntaxEditor.UI.IntelliPrompt.Overloading;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
OverloadInfoCollection overloadListA = new OverloadInfoCollection { new OverloadInfo("aaa", "aaa description") };
this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListA;
}
private void btnClear_Click(object sender, EventArgs e)
{
this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems.Clear();
}
private void btnChange_Click(object sender, EventArgs e)
{
OverloadInfoCollection overloadListB = new OverloadInfoCollection { new OverloadInfo("bbb", "bbb description") };
OverloadListPopup overloadListWindow = this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow;
overloadListWindow.Presenter.OverloadListItems = overloadListB;
overloadListWindow.Refresh();
}
private void radButton1_Click(object sender, EventArgs e)
{
OverloadInfoCollection overloadListC = new OverloadInfoCollection { new OverloadInfo("ccc", "ccc description"), new OverloadInfo("ccc 1", "ccc 1 description") };
this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListC;
}
private void radSyntaxEditor1_DocumentContentChanged(object sender, Telerik.WinForms.SyntaxEditor.Core.Text.TextContentChangedEventArgs e)
{
this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Show();
}
}
}
【问题讨论】: