TreeView使用

整理一下对TreeView的使用:

1.TreeView是作为一个容器控件,一般会在其内放入TreeViewItem控件,当然也可以放入Button等控件。

2.当需要在某些层展开,后面的收起时,需要配合TreeViewItem的Header和ItemsSource来使用。前面展开的部分都使用Header赋内容,后面收起的则使用ItemsSource统一赋值。不恰当的比喻是类似于if,elseif,elseif,…,else。故ItemsSource只在结束时使用一次。另外需要提醒的是,Header赋值为个体,ItemsSource赋值为集合。

3.可维护性好的使用方式是,通过数据模板来定义数据的显示,这有点像给对象穿衣服。为每个类的对象定义不同的界面显示,即使后期需要修改,这个逻辑也是流畅的,清晰的。

4.将ViewModel对象赋值给View的数据上下文,这时只需给Header和ItemsSource定义绑定的类型,系统会自动找到上下文的匹配类型对象(ViewModel对界面公开的属性)进行内容绑定,然后再以数据模板的方式显示出来。

 

<HierarchicalDataTemplate DataType="{x:Type local:CenterModel}" >
    <StackPanel Orientation="Horizontal">
        <Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image>
        <TextBlock VerticalAlignment="Center" Text="{Binding DisplayName}"></TextBlock>
        <StackPanel.ToolTip>
            <TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
        </StackPanel.ToolTip>
    </StackPanel>
</HierarchicalDataTemplate>

 

<TreeView Name="CenterTree" Margin="5" TreeViewItem.Selected="StationTree_Selected"  Grid.Column="0">
    <TreeViewItem  IsExpanded="True" Header="{Binding Center}" ItemsSource="{Binding Stations}">
    </TreeViewItem>     
</TreeView>

 

 

------------------------------------------------

使TreeView随时保持展开的方法:

<Style x:Key="TV_AllExpanded"  TargetType="{x:Type TreeView}">
    <Style.Resources>
        <Style TargetType="TreeViewItem">
            <Style.Triggers>
                <Trigger Property="HasItems" Value="True" >
                    <Setter Property="IsExpanded" Value="True"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Style.Resources>
</Style>

然后在代码中设置:

CenterTree.Style = (Style)this.FindResource("TV_AllExpanded");

转载于:https://www.cnblogs.com/LionX/archive/2013/02/24/2923964.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值