最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析WPF綁定層次結(jié)構(gòu)數(shù)據(jù)的應(yīng)用詳解

 更新時間:2013年05月15日 15:01:57   作者:  
本文講述WPF中單層次數(shù)據(jù)和多層次數(shù)據(jù)的綁定方法,主要闡述數(shù)據(jù)綁定的顯示層面,其中涉及了ListBox和Treeview控件。并說明它們之間的差異

在實際項目應(yīng)用中會存在多種類型的層次結(jié)構(gòu)數(shù)據(jù),WPF提供了良好的數(shù)據(jù)綁定機制。其中運用最頻繁的就是ListBox和TreeView控件。

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

二、ListBox控件示例
1.ListBox綁定數(shù)據(jù)進行分組:
使用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>


這樣就可以創(chuàng)建出類似WINDOWS 文件管理器的效果:
  

2.Listbox一些使用經(jīng)驗:
/1 如果要實現(xiàn)類似WINDOWS的漂亮的界面效果并進行分組,需要自定義GroupStyle的樣式,否則WPF會使用內(nèi)建的GroupStyle,也可以引用GroupStyle.Default靜態(tài)屬性。
/2 ListBox只能定義一層數(shù)據(jù)結(jié)構(gòu),在ListBox中的Item里再次使用ListBox,后ListBox里的ItemSource不會繼承上一層ListBox的Item源中的數(shù)據(jù)集合,如有如下數(shù)據(jù)集合:
復制代碼 代碼如下:

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>的數(shù)據(jù)集合,其Item中的ListBox Binding List<Box>,則Item中的ListBox是無法獲取List<Box>這個數(shù)據(jù)集合的;

三、TreeView控件示例
1.有如上數(shù)據(jù)集合,使用TreeView綁定多層數(shù)據(jù)集合:
復制代碼 代碼如下:

代碼
 <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屬性為層級數(shù)據(jù)模板,它繼承數(shù)據(jù)集合的層級結(jié)構(gòu),要表示樹的層級依賴關(guān)系必須使用HierarchicalDataTemplate。
屬性綁定數(shù)據(jù)使用TwoWay是為雙向?qū)傩?,當源?shù)據(jù)或目標被改變是更新另一方的數(shù)據(jù)。在層次樹表示中的典型應(yīng)用就是:用CheckBox進行子節(jié)點的選中和未選中的狀態(tài)傳遞。

相關(guān)文章

  • asp.net替換和恢復html特殊字符

    asp.net替換和恢復html特殊字符

    替換html中的特殊字符需要進行替換的文本。替換完的文本。
    2008-05-05
  • ASP.NET Core 6.0 中使用Autofac的項目實踐

    ASP.NET Core 6.0 中使用Autofac的項目實踐

    本文主要介紹了ASP.NET Core 6.0 中使用Autofac的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • discuz nt的退出實現(xiàn)代碼

    discuz nt的退出實現(xiàn)代碼

    自要點退出按鈕的時候調(diào)用logout()就可以了
    2009-06-06
  • ASP.NET?Core?WebApi返回結(jié)果統(tǒng)一包裝實踐記錄

    ASP.NET?Core?WebApi返回結(jié)果統(tǒng)一包裝實踐記錄

    本文主要是展示了針對ASP.NET Core WeApi結(jié)果統(tǒng)一返回格式的相關(guān)操作,通過示例我們一步一步的展示了完成這一目標的不斷升級的實現(xiàn),雖然整體看起來比較簡單,但是卻承載著筆者一次又一次的思考升級
    2022-04-04
  • ASP.NET中用healthMonitor屬性用法

    ASP.NET中用healthMonitor屬性用法

    ASP.NET中用healthMonitor屬性用法...
    2006-09-09
  • .NET Core讀取配置文件方式詳細總結(jié)

    .NET Core讀取配置文件方式詳細總結(jié)

    這篇文章主要為大家詳細總結(jié)了.NET Core讀取配置文件方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 圖析ASP.NET Core引入gRPC服務(wù)模板

    圖析ASP.NET Core引入gRPC服務(wù)模板

    這篇文章主要介紹了圖析ASP.NET Core引入gRPC服務(wù)模板的過程,目的就是使記錄盡可能的詳細,盡可能用通俗易懂的語言來進行描述,讓大家能用起來。在asp.net core3.0中把grpc服務(wù)作為第一等公民進行支持,所以有需要的朋友可以了解下
    2019-04-04
  • MVC框架是什么 這里為你解答

    MVC框架是什么 這里為你解答

    MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。這篇文章為大家詳細介紹了MVC框架是什么,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 使用jQuery Uploader顯示文件上傳進度

    使用jQuery Uploader顯示文件上傳進度

    在上傳大文件的時候, 我們都希望可以向用戶顯示上傳的進度, 那么這里介紹的就是使用 jQuery Uploader 來實現(xiàn)這樣的效果
    2011-12-12
  • ASP.NET清空緩存時遇到的問題簡析

    ASP.NET清空緩存時遇到的問題簡析

    本文將為大家介紹的是ASP.NET網(wǎng)站清空緩存時遇到的問題,主要是基于ObjectDataSource讀取數(shù)據(jù)位置的問題,希望對大家有所幫助。
    2015-10-10

最新評論

新邵县| 兰州市| 榆中县| 合山市| 沐川县| 东阳市| 东海县| 察哈| 南雄市| 肇州县| 巴中市| 巴彦淖尔市| 博爱县| 土默特右旗| 苏尼特左旗| 上饶市| 贵定县| 威信县| 项城市| 娱乐| 库车县| 永安市| 哈巴河县| 玛沁县| 萨嘎县| 滁州市| 盘锦市| 文登市| 嘉荫县| 平利县| 丹棱县| 恩施市| 马山县| 庆阳市| 常德市| 巴中市| 武安市| 东兴市| 嘉祥县| 辽中县| 泰顺县|