激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - ASP.NET教程 - 解析WPF綁定層次結構數據的應用詳解

解析WPF綁定層次結構數據的應用詳解

2019-11-07 11:55asp.net教程網 ASP.NET教程

本文講述WPF中單層次數據和多層次數據的綁定方法,主要闡述數據綁定的顯示層面,其中涉及了ListBox和Treeview控件。并說明它們之間的差異

在實際項目應用中會存在多種類型的層次結構數據,WPF提供了良好的數據綁定機制。其中運用最頻繁的就是ListBox和TreeView控件。

一、ListBox和TreeView控件的區別
1.ListBox顯示單層次數據集合,TreeView可以顯示單層次和多層次數據集合;
2.通過ListBox在UI層面可以展示良好的數據顯示效果,對數據集合可以進行排序、分組、過濾操作;
3.TreeView顯示為一個多層次的數據集合為樹形結構,通過Templete和Style屬性同樣可以為其定義良好的數據顯示效果;

二、ListBox控件示例
1.ListBox綁定數據進行分組:
使用ListBox.GridStyle標簽,定義HeaderTemplate屬性用來定義組頭的外觀:

復制代碼代碼如下:

代碼 
 <ListBox ItemSource="{Binding Path=Data}">
  <ListBox.GridStyle>
      <GroupStyle.HeaderTemplate>
           <DataTemplate>
                 <Stackpanel>
                          <Image Source="xxx.jpg"/>
                           <Label Content="C:"/>
                  <Stackpanel>
           </DataTemplate>
      </GroupStyle.HeaderTemplate>
  </ListBox.GridStyle>
 ......
  </ListBox>



這樣就可以創建出類似WINDOWS 文件管理器的效果:
   解析WPF綁定層次結構數據的應用詳解

2.Listbox一些使用經驗:
/1 如果要實現類似WINDOWS的漂亮的界面效果并進行分組,需要自定義GroupStyle的樣式,否則WPF會使用內建的GroupStyle,也可以引用GroupStyle.Default靜態屬性。
/2 ListBox只能定義一層數據結構,在ListBox中的Item里再次使用ListBox,后ListBox里的ItemSource不會繼承上一層ListBox的Item源中的數據集合,如有如下數據集合:

復制代碼代碼如下:

public List<Groups> groups = new List<Groups>();groups.Add(new Group);........

 

復制代碼代碼如下:

public class Group {
        public int Id { get; set; }
        public string Name { get; set; }
        private List<Box> boxes = new List<Box>();
        public List<Box> Boxes {
            get { return boxes; }
        }
    }


Listbox的ItemSource Binding List<Groups>的數據集合,其Item中的ListBox Binding List<Box>,則Item中的ListBox是無法獲取List<Box>這個數據集合的;

三、TreeView控件示例
1.有如上數據集合,使用TreeView綁定多層數據集合:

復制代碼代碼如下:

代碼 
 <TreeView x:Name="maintree" FocusVisualStyle="{x:Null}" ItemsSource="{Binding Groups}">
             <TreeView.ItemContainerStyle>
                 <Style TargetType="{x:Type TreeViewItem}">
                     <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                     <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                     <Setter Property="FontWeight" Value="Normal" />
                     <Style.Triggers>
                         <Trigger Property="IsSelected" Value="True">
                             <Setter Property="FontWeight" Value="Bold"/>
                         </Trigger>
                     </Style.Triggers>
                 </Style>
             </TreeView.ItemContainerStyle>
             <TreeView.Resources>
                 <HierarchicalDataTemplate DataType="{x:Type m:GroupVO}" ItemsSource="{Binding Boxes}">
                     <StackPanel Orientation="Horizontal">
                         <Label Content="{Binding Path=FriendlyName}"></Label>
                         <CheckBox VerticalAlignment="Center" IsChecked="{Binding Path=IsSelected}"></CheckBox>
                     </StackPanel>                 
                 </HierarchicalDataTemplate>               

                 <DataTemplate DataType="{x:Type m:BoxVO}">
                     <Grid Margin="0,5,5,10" MouseDown="maintree_MouseDown" Loaded="Grid_Loaded">
                         <Grid.RowDefinitions>
                             <RowDefinition></RowDefinition>
                         </Grid.RowDefinitions>
                         <Grid.ColumnDefinitions>
                             <ColumnDefinition Width="*"></ColumnDefinition>
                             <ColumnDefinition Width="6*"></ColumnDefinition>
                         </Grid.ColumnDefinitions>
                         <Image Source="/Resources/Images/shgbit.png" Width="50" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0"></Image>
                             <Label Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" Margin="5,5,0,0" Content="{Binding Path=FriendlyName}"></Label>
                 </DataTemplate>
             </TreeView.Resources>
         </TreeView>


HierarchicalDataTemplate屬性為層級數據模板,它繼承數據集合的層級結構,要表示樹的層級依賴關系必須使用HierarchicalDataTemplate。
屬性綁定數據使用TwoWay是為雙向屬性,當源數據或目標被改變是更新另一方的數據。在層次樹表示中的典型應用就是:用CheckBox進行子節點的選中和未選中的狀態傳遞。

延伸 · 閱讀

精彩推薦
328
主站蜘蛛池模板: 调教小男生抽打尿孔嗯啊视频 | 成人免费电影av | 欧美一区成人 | 亚洲电影在线播放 | 日韩精品中文字幕一区二区三区 | 国产精品久久久久影院老司 | 日本在线高清 | 国产精品久久久久久久久久妇女 | 久久久久久久久久久av | 日韩视频一区二区三区四区 | 男女羞羞视频在线观看免费 | 久久国产精 | 538任你躁在线精品视频网站 | 一区二区三区视频在线观看 | 欧美交在线| 亚洲网站一区 | 超碰人人做人人爱 | 国产精品一区二区x88av | 日韩精品免费一区二区三区 | 日韩a毛片免费观看 | av黄色在线免费观看 | 99riav国产在线观看 | 国产一区二区三区四区在线 | 国产激情视频在线 | 在线91视频 | 久久综合久久综合久久综合 | 精品久久久久久国产三级 | 日韩精品中文字幕一区二区三区 | 欧美一级电影网站 | 鲁丝片一区二区三区免费入口 | 91免费在线看片 | 91在线视频导航 | 九九热这里只有精品8 | 国产一区二区在线免费 | 国产高潮国产高潮久久久91 | 黄色一级电影网 | 亚洲成人在线免费观看 | 久久精品视频69 | 国产亚洲精品久久久久久网站 | 3344永久免费 | 色婷婷久久久久久 |