当前位置: 首页 > news >正文

怎么自己网站搜不到了网站建设书籍下载

怎么自己网站搜不到了,网站建设书籍下载,vue 做pc网站可以吗,2023年最火的电商平台前言 wpf中ListBox在针对多个选项选择中的应用十分广泛,本文就来讲解非Mvvm和Mvvm模式下如何使用ListBox。 1、非MVVM模式下 xaml代码: ListBoxItem用于存储ListBox的每一项,可以设置ListBoxItem的属性,比如Foreground控制项的…

前言

wpf中ListBox在针对多个选项选择中的应用十分广泛,本文就来讲解非Mvvm和Mvvm模式下如何使用ListBox。

1、非MVVM模式下

xaml代码:
ListBoxItem用于存储ListBox的每一项,可以设置ListBoxItem的属性,比如Foreground控制项的字体颜色;Background来控制项的背景色;为ListBox注册SelectionChanged事件,该事件代码在MainWindow窗体类中。

 <ListBox x:Name="ListBox_test" SelectionChanged="ListBox_SelectionChanged"><ListBoxItem Foreground="White"  Background="Red"   >项目1</ListBoxItem><ListBoxItem>项目2</ListBoxItem><ListBoxItem>项目3</ListBoxItem><ListBoxItem>项目4</ListBoxItem></ListBox >

MainWindow窗体类

 public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.DataContext = new ViewModel();}private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e){var item = ListBox_test.SelectedItem;}}

运行结果:
在这里插入图片描述

2、MVVM模式下

2.1 SelectionMode为Single

xaml代码:
1)mvvm模式下使用绑定来为ListBox添加数据,通过为ItemsSource绑定ViewModel中的Items属性
2)然后为了获取ListBox中用户选择的哪一项,为SelectedItem绑定ViewModel中的divisionType属性
但是由于SelectedItem是object类型,divisionType是枚举类型,无法直接绑定,所以要使用类型转换

<Window.Resources><local:DivisionTypeToString x:Key="DivisionTypeToString"/></Window.Resources><ListBox SelectionMode="Single" ItemsSource="{Binding Items }" Foreground="Red"  SelectedItem="{Binding divisionType, Converter={StaticResource DivisionTypeToString}}"  > </ListBox >

添加类型转换
下面的Convert方法用于将DivisionType转换成字符串,ConvertBack用于将字符串转换成DivisionType

 public  class DivisionTypeToString: IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){DivisionType divisionType = (DivisionType)value;return divisionType.ToString ();}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){DivisionType divisionType  =(DivisionType)Enum.Parse(typeof (DivisionType),value .ToString ());return divisionType;}}

添加 Model类

public enum DivisionType
{分时1,分时2
}

添加ViewModelBase类

 public class ViewModelBase{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string propname){if (PropertyChanged != null){PropertyChanged(this, new PropertyChangedEventArgs(propname));}}}

添加ViewModel类

 public class ViewModel : ViewModelBase{public ViewModel(){Items = new List<string>();Items.Add("分时1");Items.Add("分时2");}private List<string> items;public List<string> Items{get{return items;}set{this.items = value;OnPropertyChanged("Items");}}private DivisionType _divisionType = DivisionType.分时1;public DivisionType divisionType{get{return _divisionType;}set{this._divisionType = value;OnPropertyChanged("divisionType");}}}

运行结果:
在这里插入图片描述

2.2 SelectionMode为Multiple

xaml代码:
1)mvvm模式下使用绑定来为ListBox添加数据,通过为ItemsSource绑定ViewModel中的Items属性
2)又因为是多选,所以不能使用SelectedItem属性的绑定,得使用 SelectionChanged事件,然后在事件中获取SelectedItems属性从而获取所有用户选择的项,所以这里使用使用Interaction.Trigger,EventName指定绑定的事件名称,CommandSelectionChanged是绑定的ViewModel中的命令。(这里要注意使用Interaction.Triggers需要引用System.Windows.Interactivity.dll)

<Window.Resources><local:DivisionTypeToString x:Key="DivisionTypeToString"/></Window.Resources><ListBox x:Name="listBox_test2" SelectionMode="Multiple" ItemsSource="{Binding Items }" Foreground="Red"     ><Event:Interaction.Triggers><Event:EventTrigger EventName="SelectionChanged"><Event:InvokeCommandAction Command="{Binding CommandSelectionChanged}" CommandParameter="{Binding ElementName=listBox_test2}"/></Event:EventTrigger></Event:Interaction.Triggers></ListBox >

添加DelegateCommand

 public class DelegateCommand : ICommand{private readonly Action<object> _execute;private readonly Func<object, bool> _canExecute;public DelegateCommand(Action<object> execute, Func<object, bool> canExecute = null){_execute = execute ?? throw new ArgumentNullException(nameof(execute));_canExecute = canExecute;}public bool CanExecute(object parameter){if (_canExecute != null){return _canExecute(parameter);}else{return true;}}public void Execute(object parameter){_execute(parameter);}public event EventHandler CanExecuteChanged{add => CommandManager.RequerySuggested += value;remove => CommandManager.RequerySuggested -= value;}public void RaiseCanExecuteChanged(){CommandManager.InvalidateRequerySuggested();}}

添加 Model类

public enum DivisionType
{分时1,分时2
}

添加ViewModelBase类

 public class ViewModelBase{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string propname){if (PropertyChanged != null){PropertyChanged(this, new PropertyChangedEventArgs(propname));}}}

添加ViewModel类

 public class ViewModel : ViewModelBase{public ICommand CommandSelectionChanged { get; set; }public ViewModel(){Items = new List<string>();Items.Add("分时1");Items.Add("分时2");CommandSelectionChanged = new DelegateCommand(ListBoxSelectionChanged);}private List<string> items;public List<string> Items{get{return items;}set{this.items = value;OnPropertyChanged("Items");}}private ObservableCollection<DivisionType> _divisionTypeList = new ObservableCollection<DivisionType>();public ObservableCollection<DivisionType> divisionTypeList{get{return _divisionTypeList;}set{this._divisionTypeList = value;OnPropertyChanged("divisionTypeList");}}private void ListBoxSelectionChanged(object obj){divisionTypeList.Clear();ListBox listBox =(ListBox) obj;foreach ( var item in listBox.SelectedItems){DivisionType divisionType=(DivisionType) Enum.Parse(typeof (DivisionType),item.ToString ());divisionTypeList.Add(divisionType);}}}

运行结果:
在这里插入图片描述

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》

http://www.dtcms.com/a/539456.html

相关文章:

  • 合肥网站开发公司电话天津画册设计公司
  • 做电影网站要怎么样的主机做学校网站用什么模版
  • 大型网站搜索怎么做的手机网站改版公司
  • 备案期间网站如何访问国家建筑网站
  • 贾汪区住房和城乡建设局网站张家港网站 设计制作
  • WordPress多站点同步设置合肥网站开发 合肥网站优化
  • 徐州建设网站价格百度短链接
  • 网站开发外包费用的会计分录动漫新闻资讯站
  • 怎么做淘宝客采集网站哪个公司做网站好
  • 台州网站排名公司平面设计实例网站
  • 网站被挂马怎么办门户网站视频
  • 网站开发设计培训成都网站建设优点
  • 网站打开是别人的做时彩网站违法吗
  • 网站右下角调用优酷视频广告代码wordpress调用置顶文章
  • wordpress的官方网站低内存vps搭建WordPress
  • 建设厅网站上的信息采集表如何下wordpress
  • 网站文章收录怎么申请网上店铺
  • 广州做公司网站苏州有名的互联网企业
  • 有什么做衣服的网站好网站建设 技术支持 阿里
  • 怎样通过网站注册公司专业定制房地产网站建设
  • 上海专业网站建站广告设计培训班一般都要多少钱
  • 可以免费做会计题的网站深圳网上行公司怎么样
  • 上海建设行政主管部门网站秦皇岛在线
  • 可以在手机建网站的心理健康网站建设方案
  • 眉山建设网站手机网站制作时应该注意的问题
  • 网站建设难不难上海做网站定制
  • 网站编辑外包网站开发的关键技术有哪些
  • 选择网站做友情链接的标准一般是雅安北京网站建设
  • 创同盟做网站东莞设计网站建设
  • 公司汇报网站建设方案微商加人神器