完善主體資料,免費(fèi)贈送VIP會員!
    * 主體類型
    * 企業(yè)名稱
    * 信用代碼
    * 所在行業(yè)
    * 企業(yè)規(guī)模
    * 所在職位
    * 姓名
    * 所在行業(yè)
    * 學(xué)歷
    * 工作性質(zhì)
    請先選擇行業(yè)
    您還可以選擇以下福利:
    行業(yè)福利,領(lǐng)完即止!

    下載app免費(fèi)領(lǐng)取會員

    NULL

    ad.jpg

    二次開發(fā)教程:WPF 依賴屬性

    發(fā)布于:2019-07-25 15:08:19

    網(wǎng)友投稿

    更多

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


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


    首先定義個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;

            }

        }


    創(chuàng)建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里驗(yàn)證:


            private void button_Click(object sender, RoutedEventArgs e)

            {

                string info = null;

                foreach (var v in vm.SelectDatas)

                {

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

                }

                MessageBox.Show(info);

            }

    本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

    未標(biāo)題-1.jpg

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

    下一篇:二次開發(fā)教程:Revit開發(fā)之管段

    主站蜘蛛池模板: 日本韩国一区二区三区| 亚洲综合色自拍一区| 福利一区二区三区视频在线观看| 亚洲高清成人一区二区三区| 丰满人妻一区二区三区视频53| 亚洲熟妇无码一区二区三区| 亚洲国产精品一区二区三区久久 | 久久精品综合一区二区三区| 中文字幕日韩一区二区不卡| 69福利视频一区二区| 丝袜无码一区二区三区| 人妻精品无码一区二区三区| 3d动漫精品成人一区二区三| 色窝窝无码一区二区三区色欲| 精品视频一区二区三区四区五区| 日本精品一区二区三本中文| 波多野结衣一区视频在线| 精品国产一区二区三区香蕉| 亚洲av无码片区一区二区三区| 亚洲一区综合在线播放| 精品无码人妻一区二区三区品| 韩国福利一区二区三区高清视频| 一区二区三区91| 日韩一区二区三区在线观看| 午夜视频久久久久一区 | 亚洲不卡av不卡一区二区| 国模大尺度视频一区二区| 国产婷婷一区二区三区| av无码一区二区三区| 国产一区二区视频在线观看| 成人区精品一区二区不卡| 亚洲日韩精品一区二区三区无码| 韩国福利一区二区三区高清视频| 国偷自产av一区二区三区| 人妻无码久久一区二区三区免费| 中文字幕一区二区三区精彩视频| 久久久久一区二区三区| 国产精品一区二区不卡| 精品国产精品久久一区免费式| 无码精品久久一区二区三区| 在线观看免费视频一区|