91手机视频在线-91手机视频在线观看-91手机在线-91手机在线播放-91手机在线观看

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

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

NULL

ad.jpg

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

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

網(wǎng)友投稿

更多

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


所以可以自定義一個(gè)依賴屬性來(lái)綁定:


首先定義個(gè)TListBox類來(lái)代替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

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

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

主站蜘蛛池模板: 成人一级片 | 国产在线播放免费 | 国产日韩在线 | 国产精品亚洲一区二区三区在线观看 | 美日韩中文字幕 | yy6080韩国日本三理论 | 九九黄色大片 | 欧美成人亚洲高清在线观看 | 路线1路线二线路三国产 | 日韩国产欧美视频 | 欧美蜜桃臀在线观看一区 | 免费簧网站永久在线播放国产 | 日韩中文字幕视频在线观看 | 在线观看免费视频一区 | 二级黄的全免费视频 | 国产精品嫩草影院午夜 | 日本高清免费不卡毛片 | 真正毛片| 免费一级乱子伦片 | 亚洲青青| 成人性生活免费看 | 国产亚洲精品bv在线观看 | 三级毛片在线免费观看 | 自拍亚洲国产 | 一级片在线免费播放 | 黄色片免费在线 | 久久精品国产精品亚洲婷婷 | 日韩区在线观看 | 国产成人久久久精品一区二区三区 | 一区二区三区影视 | 大量愉拍情侣在线视频 | 国产欧美在线一区二区三区 | 91福利免费体验区观看区 | 亚洲国产精品综合久久久 | 黄色片 在线播放 | 曰本又色又爽又黄三级视频 | 免费一级毛片免费播放 | 国产精品你懂的在线播放调教 | 亚洲第一页在线播放 | 久久美女精品国产精品亚洲 | 亚洲欧美成人永久第一网站 |