我有TreeView
显示对象的属性。其中一个属性是一个大字节数组。
TreeView的ItemsSource
显然将其视为子节点的集合,但我真正想要的是一个子节点,显示仍然可以展开/折叠的整个数组。
例如目前
- MyObject
Prop1
Prop2
- PropWithBytes
1
2
3
etc
我想要的是什么:
- MyObject
Prop1
Prop2
- PropWithBytes
1, 2, 3 etc
有没有办法告诉Tree将集合视为单个节点?
如果我不希望实际数据仍然是一个单独的节点,我可以轻松编写DataTemplate
(而不是HierarchicalDataTemplate
)来显示它。我还可以使用使用DataTemplate
的{{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();
}
}