C# 使ItemsSource将集合视为单个项,而不是对其进行迭代?

C# 使ItemsSource将集合视为单个项,而不是对其进行迭代?,c#,wpf,collections,treeview,itemssource,C#,Wpf,Collections,Treeview,Itemssource,我有一个显示对象属性的TreeView。属性之一是大字节数组 TreeView的ItemsSource显然将其视为子节点的集合,但我实际上想要的是一个子节点,它显示仍然可以展开/折叠的整个阵列 目前 - MyObject Prop1 Prop2 - PropWithBytes 1 2 3 etc 我想要的是: - MyObject Prop1 Prop2 - PropWithBytes 1, 2

我有一个显示对象属性的
TreeView
。属性之一是大字节数组

TreeView的
ItemsSource
显然将其视为子节点的集合,但我实际上想要的是一个子节点,它显示仍然可以展开/折叠的整个阵列

目前

- MyObject
    Prop1
    Prop2
  - PropWithBytes
      1
      2
      3
      etc
我想要的是:

- MyObject
    Prop1
    Prop2
  - PropWithBytes
      1, 2, 3  etc
有没有办法告诉树将集合视为单个节点


如果我不希望实际数据仍然是一个单独的节点,我可以很容易地编写一个
DataTemplate
(与
hierarchycaldatatemplate
)来显示它。我还可以使用
数据模板
,该模板使用
扩展器
来隐藏工作正常但外观难看的数据。

如果我正确理解您的问题,请尝试使用ValueConverter,它将检查传递的值是否为字节数组(如果是字节数组,则返回其字符串表示形式)

公共类ByteArrayValueConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
if(value!=null&&value为IEnumerable)
返回string.Join(“,”,(IEnumerable)值);
返回值;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotSupportedException();
}
}

如果不是因为我仍然需要在子模板中以字节[]的形式访问参数(因此如果数据太宽,我可以包装数据),那就太完美了。我想我可以编写另一个转换器来再次将其转换回来,但这感觉很不舒服。我已标记为答案,因为您启发了实际的解决方案-使用转换器将数组包装到另一个包含1项的数组中。很好,谢谢!
public class ByteArrayValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null && value is IEnumerable<byte>)
            return string.Join(", ", (IEnumerable<byte>)value);
        return value;
    }

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