Я получил TreeView
и хочу отображать данные вложенными (не иерархически). Данные первого уровня называются TaskViewModel
, данные второго уровня - ArtifactViewModel
. Я хочу, чтобы ArtifactViewModel
горизонтально внутри GroupBox
, который представляет TaskViewModel
. Я пробовал различные подходы, это мой последний:Должен ли я создать контрольную таблицу? Или есть альтернатива?
<TreeView Name="tvTasks" ItemsSource="{Binding Tasks}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type vm:TaskViewModel}">
<GroupBox Header="{Binding Name, UpdateSourceTrigger=PropertyChanged}">
<StackPanel Orientation="Vertical">
<ListView ItemsSource="{Binding Children}"/>
<TextBlock Text="{Binding Description, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap"/>
</StackPanel>
</GroupBox>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type vm:ArtifactViewModel}">
<Border Background="{Binding Type,Converter={StaticResource Type2Background}}"
Margin="5" BorderBrush="Black" BorderThickness="2" CornerRadius="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="80"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"
TextAlignment="Center" Background="Black" Foreground="White"
Opacity="0.75" Grid.Column="0" Grid.Row="1"/>
</Grid>
</Border>
</DataTemplate>
</TreeView.Resources>
</TreeView>
Это выглядит очень похоже на то, что я хочу, кроме того, что ArtifactViewModel
s показаны вертикальные. И если я нажму на ArtifactViewModel
, tvTasks.SelectedItem не изменится, потому что ListView
передает это событие. Я знаю, что этот подход не самый умный, но это просто попытка.
Я посмотрел на this article, но я не вижу, как иметь дело с разными объектами, которые я хочу поместить в TreeView
. Итак ... как я могу создать такой интерфейс?
Спасибо за ваш ответ, но я не думаю, что это помогло бы мне. У меня также есть приложение ContentPresenterin, которое привязано к TreeView и свойству SelectedItem. Одна из моих предыдущих попыток была ListViews (без TreeView), которая не работала очень хорошо. –
Удачи. Тем не менее, я думаю, что у вас возникнут проблемы, пока используются вложенные элементы управления выбором. Вам понадобится только один элемент управления выбором и использовать DataTemplates для выполнения позиционирования/компоновки. – micahtan