我需要以非常复杂的方式在WinForms中显示数据。
有很多行,每行需要显示略有不同。 每行的模型都有一个实体列表,每个实体都转换为一个按钮。
根据一些规则,每行的按钮以特定方式提供。每行在行和列中以不同的方式显示不同数量的按钮。
除此之外,显示器需要绑定到模型并监听许多频繁的更改,不仅要更改显示的值,还要显示指示是否显示行或显示的事项的计算数据是否按钮,颜色指示等。
现在它是用Telerik GridView实现的,并且,正如您所料,它不能很好地运行,数据太多。滚动条步履蹒跚,在许多场景中,行或单元格不会显示,直到用户滚动一点。
这是我希望如何显示它的例子(没有颜色和东西)
这是代码的一个非常简短的示例:
public class CustomCellElement : GridDataCellElement
{
protected override SizeF ArrangeOverride(SizeF finalSize)
{
try
{
float x = finalSize.Width;
float y = 0;
float maxHeight = 0;
foreach (var child in this.Children.ToList())
{
try
{
var element = child as RadButtonElement;
arrange logic...
child.Arrange(location);
.
.
------------
protected override void CreateChildElements()
{
_childItems = new ThreadSafedBindingList<E>();
_childItemsBindings = new List<Binding>();
base.CreateChildElements();
}
protected override void SetContentCore(object value)
{
...
foreach (var someChild in childs.ToList())
{
AddItem(someChild);
}
...
....
protected override void SetBindings(SomeChildEntity childElement, CustomRadButtonElement item)
{
....
Creating many bindings necessary for each SomeChildEntity
....
}
....
我很高兴听到建议!
由于