我现在正在使用 TreeView。如您所见,CurrentMediumObjectives
和 ChildrenObjective
是相同的对象类型,称为 Objective
。
此类有一个名为 Level
的属性,其中 ChildrenObjective
设置为 1,ChildrenObjective
设置为 2。
我想根据级别
设置不同的DataTemplate
。
<TreeView ItemsSource="{Binding CurrentMediumObjectives}"
Margin="0,40,0,0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildrenObjective}">
<TextBlock FontWeight="Bold">
<Run Text="Objective " />
<Run Text="{Binding Level}" />
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我很困惑是否应该使用 DataTemplateSelector 还是 DataTrigger。 提前致谢。
最佳答案
也许您可以只使用触发器
来显示每个模板。
也许是这样的:
<TreeView ItemsSource="{Binding CurrentMediumObjectives}" Margin="0,40,0,0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildrenObjective}">
<Grid>
<!--Data template for level 1-->
<TextBlock x:Name="level1" FontWeight="Bold">
<Run Text="Objective " />
<Run Text="{Binding Level}" />
</TextBlock>
<!--Data template for level 2-->
<TextBlock x:Name="level2" FontWeight="Bold" Foreground="Red">
<Run Text="Objective " />
<Run Text="{Binding Level}" />
</TextBlock>
</Grid>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Level}" Value="1">
<Setter TargetName="level1" Property="Visibility" Value="Visible" />
<Setter TargetName="level2" Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding Level}" Value="2">
<Setter TargetName="level2" Property="Visibility" Value="Visible" />
<Setter TargetName="level1" Property="Visibility" Value="Collapsed" />
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
模型(猜测)
public class Objective
{
public int Level { get; set; }
}
public class CurrentMediumObjectives : Objective
{
public ObservableCollection<ChildrenObjective> ChildrenObjective { get; set; }
}
public class ChildrenObjective : Objective
{
}
结果:
关于c# - 如何在 TreeView 控件的级别1和级别2中设置不同的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830682/