乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      wpf之TreeView綁定

       牛人的尾巴 2016-04-03

      wpf之TreeView綁定

           wpf綁定TreeView,貌似比winForm可能要麻煩一些,不過仔細分析一下,還是很好解決的,最近做了一個項目,正好寫了一下,下面把代碼貼出來和大家分享一下

      先看一個簡單的綁定

      復制代碼
       //代碼綁定TreeView2
              private void BindTreeView2()
              {
                  TreeViewItem item1 = new TreeViewItem() { Header = "節(jié)點一" };
                  TreeViewItem item11 = new TreeViewItem() { Header = "節(jié)點1-1" };
                  item11.Items.Add("aaaa");
                  item11.Items.Add("bbbb");
                  item11.Items.Add("cccc");
                  item11.Items.Add("dddd");
      
      
                  item1.Items.Add(item11);
                  item1.Items.Add("cccc");
                  item1.Items.Add("dddd");
      
                  TreeViewItem item2 = new TreeViewItem() { Header = "節(jié)點二" };
                  item2.Items.Add("aaaa");
                  item2.Items.Add("bbbb");
                  item2.Items.Add("cccc");
                  item2.Items.Add("dddd");
                  treeView2.Items.Add(item1);
                  treeView2.Items.Add(item2);
              }
      
              private void treeView2_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
              {
                  string dd = treeView2.SelectedItem as string;
                  MessageBox.Show(dd);
              }
      復制代碼

      然后在看看動態(tài)綁定

      首先、需要創(chuàng)建一個節(jié)點類,包括節(jié)點名稱,圖片,內(nèi)容等,另外為了可以增加子節(jié)點,在加一個泛型IList,類型就是節(jié)點類本身

       

      復制代碼
      /// <summary>
          
      /// 節(jié)點類
          
      /// </summary>
          internal class PropertyNodeItem
          {
              public string Icon { getset; }
              public string EditIcon { getset; }
              public string DisplayName { getset; }
              public string Name { getset; }
              public int id { getset; }
              public int parentId{get;set;}
              public bool IsExpanded { getset; }
              public List<PropertyNodeItem> Children { getset; }
              public PropertyNodeItem()
              {
                  Children = new List<PropertyNodeItem>();
              }
          }
      復制代碼

       

      然后從數(shù)據(jù)庫中讀取根節(jié)點綁定到treeView中

       

      復制代碼
        WebDictClassServices.WebDictClass webDict = new WebDictClass();
              //根節(jié)點添加到treeVIew中
              private void loadTree()
              {
                  tvProperties.Items.Clear();//加載根節(jié)點前先清除Treeview控件項
                  List<PropertyNodeItem> itemList = new List<PropertyNodeItem>();
                  DataTable  dt=webDict.GetArticles();
                  DataView dv = dt.DefaultView;
                  dv.RowFilter = " ClassType='3' and ParentId=0 ";
                  PropertyNodeItem node = new PropertyNodeItem()
                  {
                      DisplayName = dv[0].Row["title"].ToString(),
                      Name = dv[0].Row["title"].ToString(),
                      id=Convert.ToInt32(dv[0].Row["id"].ToString()),
                      parentId=Convert.ToInt32(dv[0].Row["ParentId"].ToString()),
                      IsExpanded=true
                      
                  };
                  int id =Convert.ToInt32(dv[0]["id"].ToString());
                  int pid = Convert.ToInt32(dv[0]["ParentId"].ToString());
                  ForeachPropertyNode(node, id);
                  itemList.Add(node);
                  
                  this.tvProperties.ItemsSource = itemList;
              }
      復制代碼

       

      然后,在 ForeachPropertyNode方法中,實現(xiàn)了無限極節(jié)點

       

      復制代碼
       //無限接循環(huán)子節(jié)點添加到根節(jié)點下面
              private void ForeachPropertyNode(PropertyNodeItem node,int pid)
              {
                  DataTable dtDict = webDict.GetArticles();
                  DataView dvDict = dtDict.DefaultView;
                  dvDict.RowFilter = " ClassType='3' and ParentId=" + pid;

                  if (dvDict.Count > 0)
                  {
                      foreach (DataRowView view in dvDict)
                      {
                          int id = Convert.ToInt32(view["id"].ToString());
                          string name = view["title"].ToString();
                          int parentId = Convert.ToInt32(view["ParentId"].ToString());
                          PropertyNodeItem childNodeItem = new PropertyNodeItem()
                          {
                              DisplayName = name,
                              Name = name,
                              id=id,
                              parentId=parentId,
                              IsExpanded=false
                          };
                          ForeachPropertyNode(childNodeItem, id);
                          node.Children.Add(childNodeItem);
                      }
                  }
                
              }
      復制代碼

      如果我們想觸發(fā)點擊節(jié)點事件

       

      復制代碼
            //選中節(jié)點事件
              private void tvProperties_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
              {
                  PropertyNodeItem item = this.tvProperties.SelectedItem as PropertyNodeItem;
                  string nodeText= item.Name;

                //  MessageBox.Show(nodeText);
                  
              }
      復制代碼

       

      前臺的xaml文件

       

      復制代碼
       <TreeView Height="264" x:Name="tvProperties" Width="220" SelectedItemChanged="tvProperties_SelectedItemChanged">
                      <TreeView.ItemContainerStyle>
                          <Style TargetType="{x:Type TreeViewItem}">
                              <Setter Property="IsExpanded" Value="{Binding IsExpanded}"></Setter>
                          </Style>
                      </TreeView.ItemContainerStyle>
                          <TreeView.ItemTemplate>
                    
                          <HierarchicalDataTemplate  ItemsSource="{Binding Path=Children}">
                              
                              <StackPanel Orientation="Horizontal">
                                
                                  <Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image>

                                  <TextBlock VerticalAlignment="Center" Name="nodeName" Text="{Binding DisplayName}"></TextBlock>
                                
                                  <Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image>
                                
                                  <StackPanel.ToolTip>
                                     
                                      <TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
                                     
                                  </StackPanel.ToolTip>
                                 
                              </StackPanel>
                            
                          </HierarchicalDataTemplate>
                      
                      </TreeView.ItemTemplate>
                  </TreeView>
      復制代碼

       可以發(fā)現(xiàn),我們綁定的節(jié)點是類型的,到時候都可以轉(zhuǎn)化過去,從而取得相關(guān)的值

      多思考,多創(chuàng)新,才是正道!

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多