一千萬個為什麽

搜索

WPF格式顯示文字?


我有一個像這樣定義的列:


但是我沒有將文件大小顯示為一個大數字,而是想顯示單位,但仍然按照實際的 FileSizeBytes 進行排序。有沒有什麽方法可以在顯示它之前通過函數或其他東西運行它?


@Igor:

效果很好。

http://img200.imageshack.us/img200/4717/imageget.jpg

[ValueConversion(typeof(long), typeof(string))]
class FileSizeConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
        double size = (long)value;
        int unit = 0;

        while (size >= 1024)
        {
            size /= 1024;
            ++unit;
        }

        return String.Format("{0:0.#} {1}", size, units[unit]);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

最佳答案

如果您使用的是.NET 3.5SP1或更高版本,則可以嘗試在綁定表達式中使用StringFormat。請參閱此帖子萊斯特的WPF博客這篇文章在Vince Sibal的博客中提供了一些語法示例。將StringFormat添加到綁定將消除對值轉換器的大多數需求,並方便地使用標記保持格式,而不是在某個地方的另一個類中。打字肯定也少了很多。

也許這樣的事情會起作用:


我不確定點擊標題對項目進行排序會將它們排序為字符串或基礎數據類型,因此,根據您的格式表達式的樣子,您可能會或可能不會獲得所需的排序行為。

轉載註明原文: WPF格式顯示文字?

猜你喜歡