完善主體資料,免費贈送VIP會員!
      * 主體類型
      * 企業名稱
      * 信用代碼
      * 所在行業
      * 企業規模
      * 所在職位
      * 姓名
      * 所在行業
      * 學歷
      * 工作性質
      請先選擇行業
      您還可以選擇以下福利:
      行業福利,領完即止!

      下載app免費領取會員

      NULL

      ad.jpg

      二次開發教程:WPF 依賴屬性

      發布于:2019-07-25 15:08:19

      網友投稿

      更多

      WPF 的ListBox 可以綁定SelectedItem但是不可以綁定SelectedItems不能綁定,這就有點煩了。


      所以可以自定義一個依賴屬性來綁定:


      首先定義個TListBox類來代替ListBox


          public class TListBox:ListBox

          {

              public static readonly DependencyProperty SelectItemsProperty;        

              public List<ListBoxData> SelectItems

              {

                  get

                  {

                      return (List<ListBoxData>)GetValue(SelectItemsProperty);

                  }

                  set

                  {

                      SetValue(SelectItemsProperty, value);

                  }

              }


              static TListBox()

              {

                  SelectItemsProperty = DependencyProperty.Register("SelectItems", typeof(List<ListBoxData>), typeof(TListBox));//, data);

              }

              public TListBox()

              {

                  this.SelectionChanged += TListBox_SelectionChanged;

              }

              private void TListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

              {

                  List<ListBoxData> _items = new List<ListBoxData>();

                  TListBox box = sender as TListBox;

                  foreach(var itm in box.SelectedItems)

                  {

                      _items.Add(itm as ListBoxData);

                  }

                  SelectItems = _items;

              }

          }


      創建ViewModel


          public class ViewModel:INotifyPropertyChanged

          {

              private string _text = "1234";

              public string Text

              {

                  get

                  {

                      return _text;

                  }

                  set

                  {

                      _text = value;

                      RaisePropertyChanged(nameof(Text));

                  }

              }

              private List<ListBoxData> selectdatas = null;

              public List<ListBoxData> SelectDatas

              {

                  get

                  {

                      return selectdatas;

                  }

                  set

                  {

                      selectdatas = value;

                      RaisePropertyChanged(nameof(SelectDatas));

                  }

              }

              private List<ListBoxData> datas = null;

              public List<ListBoxData> Datas

              {

                  get

                  {

                      return datas;

                  }

                  set

                  {

                      datas = value;

                      RaisePropertyChanged(nameof(Datas));



                  }

              }

              public ViewModel()

              {

                  datas = new List<ListBoxData>();

                  datas.Add(new ListBoxData(0, "name1"));

                  datas.Add(new ListBoxData(1, "name2"));

                  datas.Add(new ListBoxData(2, "name3"));

                  datas.Add(new ListBoxData(3, "name4"));

                  datas.Add(new ListBoxData(4, "name5"));

                  datas.Add(new ListBoxData(5, "name6"));

              }


              public event PropertyChangedEventHandler PropertyChanged;


              private void RaisePropertyChanged(string name)

              {

                  if(PropertyChanged!=null)

                  {

                      PropertyChanged(this, new PropertyChangedEventArgs(name));

                  }

              }

          }


          public class ListBoxData

          {

              public int Id { get; set; }

              public string Name { get; set; }

              public ListBoxData(int id ,string name)

              {

                  Id = id;

                  Name = name;

              }

          }




      使用TListBox


          <Grid>

              <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="411,277,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>

              <local:TListBox x:Name="listBox" ItemsSource="{Binding Path=Datas}" DisplayMemberPath="Name"

                              SelectItems="{Binding Path=SelectDatas,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"                        

                              HorizontalAlignment="Left" Height="188" Margin="38,22,0,0" VerticalAlignment="Top" Width="162" SelectionMode="Extended"/>

          </Grid>


      在Button的Click里驗證:


              private void button_Click(object sender, RoutedEventArgs e)

              {

                  string info = null;

                  foreach (var v in vm.SelectDatas)

                  {

                      info += v.Name + "\n";

                  }

                  MessageBox.Show(info);

              }

      本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

      未標題-1.jpg

      上一篇:二次開發教程:WPF 給控件添加可以綁定的命令

      下一篇:二次開發教程:Revit開發之管段

      主站蜘蛛池模板: 视频一区二区在线观看| 国产AV一区二区三区无码野战| 国产无线乱码一区二三区 | 国精品无码一区二区三区在线蜜臀| 福利视频一区二区牛牛 | 欧洲精品码一区二区三区| 无码中文人妻在线一区| 亚洲国产精品一区二区三区久久 | 国产剧情国产精品一区| 91视频一区二区三区| 国产伦精品一区二区三区视频金莲 | 精品日本一区二区三区在线观看 | 国产高清精品一区| 亚洲无圣光一区二区| 欧洲精品码一区二区三区免费看| 奇米精品一区二区三区在| 精品一区二区三区波多野结衣| 日本精品啪啪一区二区三区| 亚洲一区二区三区AV无码| 亚洲大尺度无码无码专线一区 | 麻豆视传媒一区二区三区| 国产美女精品一区二区三区| 女人18毛片a级毛片一区二区| 国产一区视频在线| 一区二区三区在线播放视频| 精品无码综合一区二区三区| 一区高清大胆人体| 久久高清一区二区三区| 国产另类ts人妖一区二区三区| 日本一区二区三区日本免费| 精品国产一区二区三区麻豆| 亚洲一区二区电影| 无码精品黑人一区二区三区| 亚洲国产国产综合一区首页| 久久久无码精品国产一区| 无码人妻一区二区三区在线| 亚洲国产精品一区二区第一页免 | 亚洲国产一区在线| 精品不卡一区二区| 一区二区亚洲精品精华液| 日韩伦理一区二区|