gpt4 book ai didi

c# - 如何在 TreeView 中设置不同的样式控件级别 1 和 2?

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:35 25 4
gpt4 key购买 nike

我现在正在使用 TreeView。如您所见,CurrentMediumObjectivesChildrenObjective 是相同的对象类型,称为 Objective

这个类有一个名为 Level 的属性,其中 ChildrenObjective 设置为 1,ChildrenObjective 设置为 2。

我想根据 Level 设置不同的 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 感到困惑。提前致谢。

最佳答案

也许您可以使用Trigger 来显示每个模板。

可能是这样的:

<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
{
}

结果: enter image description here

关于c# - 如何在 TreeView 中设置不同的样式控件级别 1 和 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com