为ListView分组创建C#参数委托

时间:2018-01-13 16:05:47

标签: c# listview

我有一个包含许多列的可分组列表视图,我希望每个列都按照数组定义的范围进行分组。

目前我必须写:

_priceColumn.GroupItemAccessor = new ColumnItemValueAccessor(GetPriceGroupValueFromItem)

Decimal[] mSplitters = { 1000000, 10000000, 100000000, 1000000000, 10000000000 };
private Object GetPriceGroupValueFromItem(Object o)
{
    decimal? price = ((Ticker)o).Price;


    if (price == null)
    {
        return "Null";
    }

    int cnt = mSplitters.Length;
    for (int i = 0; i < cnt; i++)
    {
        if (i == cnt - 1 && (price > mSplitters[i]))
            return $"Price > ({mSplitters[i].ShortFormat()})"; 
        if (price < mSplitters[i])
        {
            if (i > 0)
                return $"Price ({mSplitters[i - 1].ShortFormat()} - {mSplitters[i].ShortFormat()})";
            else
                return $"Price < ({mSplitters[i].ShortFormat()})";
        }
    }
    return "Error";
}

需要复制和调整每个列的大量代码。

我想要的是:

_priceColumn.GroupItemAccessor = 
new ColumnItemValueAccessor(Helpers.CreateGroupValueDelegate(Ticker.Price, mSplittersToGroupBy, "Price", FormatExtensionMethodToUse))

我需要通过“Price”和FormatExtensionMethodToUse为它创建正确的字符串或“Price”,“24h High”,“Change”等列

如果它有帮助,我在这里使用的ListView就是这个https://www.codeproject.com/Articles/20052/Outlook-Style-Grouped-List-Control

我希望任何人都可以帮助并停止杂乱的复制和粘贴。

这个问题与另一个关于代表比较的方法有关,我决定单独发布,以避免发布凌乱的第一篇文章。

Btw:如果有人知道更好的免费(最好是wpf)listview支持嵌套组,并通过拖动列标题轻松拖放分组,请告诉我。

0 个答案:

没有答案