2

現在、TreeView を使用しています。ご覧CurrentMediumObjectivesのとおり、 と ChildrenObjectiveは と呼ばれる同じオブジェクト タイプObjectiveです。

このクラスには というプロパティがLevelあり、inChildrenObjectiveは 1 にChildrenObjective設定され、2 に設定されます。

DataTemplateによって設定を変えたいと思いLevelます。

    <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 を使用する必要があるかどうかについて混乱しています。前もって感謝します。

4

1 に答える 1

2

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

結果: ここに画像の説明を入力してください

于 2012-12-12T00:19:38.293 に答える