c# - 如何获取 WPF ListView 以将字节数组格式化为逗号分隔的字符串?

标签 c# wpf data-binding listview datatemplate

我正在尝试将一些数据绑定(bind)到 WPF ListView 。我的数据类型的属性之一是 byte[] 类型,我希望它显示为逗号分隔的字符串,例如 { 12, 54 } code> 将显示为 12, 54 而不是 Byte[] Array。我想我想制作一个自定义 DataTemplate 但我不确定。那是最好的方法吗?如果是这样,我该怎么做?如果不是,最好的方法是什么?

编辑:我只想将它用于一列 - 其他属性显示正常。

最佳答案

我建议使用 ValueConverter:

[ValueConversion(typeof(byte []), typeof(string))]
public class ByteArrayConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        byte [] bytes = (byte [])value;
        StringBuilder sb = new StringBuilder(100);
        for (int x = 0; x<bytes.Length; x++)
        {
            sb.Append(bytes[x].ToString()).Append(" ");
        }
        return sb.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }

    #endregion
}

在您的 xaml 中,您可以像这样将它添加到您的绑定(bind)中:

<Window.Resources>
    <local:ByteArrayConverter x:Key="byteArrayConverter"/>
</Window.Resources>

...

"{Binding ByteArrayProperty, Converter={StaticResource byteArrayConverter}}"

关于c# - 如何获取 WPF ListView 以将字节数组格式化为逗号分隔的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194899/

相关文章:

c# - 如何在 .net Framework 4.6 上启用 Vector.IsHardwareAccelerated?

c# - 将 CustomControl DependencyProperty 绑定(bind)到 ViewModel 枚举

wpf - ViewModel 是否应该被不同的 View 重用?如果有,什么时候?

c# - 如何在运行时在 WPF 中创建 CefSharp ChromiumWebBrowser

c# - WPF ListView 中的 DateTime 区域特定格式

c# - 在 C# 中,我的数据网格不显示行

c# - LINQ:按列表字段分组

c# - 如何确定 C# 中 .wav 文件的长度(即持续时间)?

WPF DataGrid 绑定(bind)到数据表

c# - 在 Entity Framework 中,我有一个 id (int) 用于收集其他类的 id。如何将它从类转换为id?