使ItemsSource将集合视为单个项目,而不是迭代它?

时间:2012-02-02 13:27:41

标签: c# wpf collections treeview itemssource

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

TreeView的ItemsSource显然将其视为子节点的集合,但我真正想要的是一个子节点,显示仍然可以展开/折叠的整个数组。

例如目前

- MyObject
    Prop1
    Prop2
  - PropWithBytes
      1
      2
      3
      etc

我想要的是什么:

- MyObject
    Prop1
    Prop2
  - PropWithBytes
      1, 2, 3  etc

有没有办法告诉Tree将集合视为单个节点?

如果我不希望实际数据仍然是一个单独的节点,我可以轻松编写DataTemplate(而不是HierarchicalDataTemplate)来显示它。我还可以使用使用DataTemplate的{​​{1}}来隐藏工作正常的数据,但看起来很难看。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题 - 尝试使用ValueConverter,它将检查传递的值是否为字节数组(如果是字节数组 - 返回它的字符串表示)。

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();
    }
}