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

中小型网站建设服务重庆建设工程交易网

中小型网站建设服务,重庆建设工程交易网,最棒的网站建设,本地数据库搭建网站将集合绑定到ItemsControl控件时#xff0c;会不加通告的在后台创建数据视图——位于数据源和绑定的控件之间。数据视图是进入数据源的窗口#xff0c;可以跟踪当前项#xff0c;并且支持各种功能#xff0c;如排序、过滤、分组。 这些功能和数据对象本身是相互独立的会不加通告的在后台创建数据视图——位于数据源和绑定的控件之间。数据视图是进入数据源的窗口可以跟踪当前项并且支持各种功能如排序、过滤、分组。 这些功能和数据对象本身是相互独立的这意味着可在窗口的不同部分使用不同的方式绑定相同的数据。例如可将同一个集合绑定到两个不同的列表并对集合进行过滤以显示不同的记录。来自于WPF编程宝典。我实测下来绑定自同一个数据源的ItemsControl控件会共享一个View当对该View进行筛选、排序时会应用到所有绑定到该数据源的控件。 获取视图的方法 ListCollectionView? view CollectionViewSource.GetDefaultView(filterListBox.ItemsSource) as ListCollectionView; ListCollectionView? view CollectionViewSource.GetDefaultView(Orders) as ListCollectionView;可以看到可以直接通过数据源来获取视图这也表明绑定到同一个数据源的控件会公用一个视图。 视图有 MoveCurrentToPrevious()、MoveCurrentToNext() 方法可以用于视图导航。 private void cmdPrev_Click(object sender, RoutedEventArgs e){View?.MoveCurrentToPrevious();}private void cmdNext_Click(object sender, RoutedEventArgs e){View?.MoveCurrentToNext();}private void view_CurrentChanged(object? sender, EventArgs e){lblPosition.Text Record (View?.CurrentPosition 1).ToString() of View?.Count.ToString();cmdPrev.IsEnabled View?.CurrentPosition 0;cmdNext.IsEnabled View?.CurrentPosition View?.Count - 1;} 视图排序 View.SortDescriptions.Add(new SortDescription(Volume, ListSortDirection.Ascending)); View.SortDescriptions.Add(new SortDescription(Price, ListSortDirection.Descending)); 视图分组 ListBox x:NamegroupListBox ItemsSource{Binding PathOrders}ListBox.ItemTemplateDataTemplateTextBlockTextBlock Text{Binding Price}/TextBlock - TextBlock Text{Binding Volume}/TextBlock/TextBlock/DataTemplate/ListBox.ItemTemplateListBox.GroupStyleGroupStyleGroupStyle.HeaderTemplateDataTemplateTextBlock Text{Binding PathName} FontWeightBold ForegroundWhite BackgroundLightGreen Margin0,5,0,0 Padding3//DataTemplate/GroupStyle.HeaderTemplate/GroupStyle/ListBox.GroupStyle /ListBox View.GroupDescriptions.Add(new PropertyGroupDescription(Volume)); 视图过滤 public class ProductByPriceFilterer {public ProductByPriceFilterer(decimal minimumPrice){MinimumPrice minimumPrice;}public decimal MinimumPrice { get; set; }public bool FilterItem(Object item){Order? order item as Order;if (order ! null){return order.Price MinimumPrice;}return false;} } public partial class MainWindow : Window {public MainWindow(){InitializeComponent();View (ListCollectionView)CollectionViewSource.GetDefaultView(Orders);View.IsLiveFiltering true;View.LiveFilteringProperties.Add(Price);}public ObservableCollectionOrder Orders { get; set; } new();private ListCollectionView? View;public decimal MinPrice { get; set; } 200;private ProductByPriceFilterer? filterer;private void cmdFilter_Click(object sender, RoutedEventArgs e){if (View ! null){filterer new ProductByPriceFilterer(MinPrice);View.Filter new Predicateobject(filterer.FilterItem);}}private void cmdRemoveFilter_Click(object sender, RoutedEventArgs e){if (View ! null){View.Filter null;}} } 完整代码文件 MainWindow.xaml Window x:ClassDataView.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:DataViewmc:IgnorabledTitleMainWindow Height450 Width800Grid NamemyGridGrid.ColumnDefinitionsColumnDefinition/ColumnDefinition//Grid.ColumnDefinitionsGrid.RowDefinitionsRowDefinition/RowDefinition/RowDefinition/RowDefinition HeightAuto//Grid.RowDefinitionsStackPanel Grid.Row0 Grid.Column0 StackPanel OrientationHorizontalButton NamecmdPrev ClickcmdPrev_Clicklt;/ButtonTextBlock NamelblPosition VerticalAlignmentCenter/TextBlockButton NamecmdNext ClickcmdNext_Clickgt;/Button/StackPanelListBox x:NamenavigateListBox DisplayMemberPathPrice IsSynchronizedWithCurrentItemTrue ItemsSource{Binding PathOrders}//StackPanelStackPanel Grid.Row0 Grid.Column1 HorizontalAlignmentStretch VerticalAlignmentStretchGridGrid.ColumnDefinitionsColumnDefinition/ColumnDefinitionColumnDefinition/ColumnDefinition/Grid.ColumnDefinitionsGrid.RowDefinitionsRowDefinition/RowDefinitionRowDefinition/RowDefinition/Grid.RowDefinitionsLabel Grid.Row0 Grid.Column0Price Than/LabelTextBox Grid.Row0 Grid.Column1 Text{Binding PathMinPrice}/TextBoxButton Grid.Row1 Grid.Column0 ClickcmdFilter_ClickFilter/ButtonButton Grid.Row1 Grid.Column1 ClickcmdRemoveFilter_ClickRemove Filter/Button/GridListBox NamefilterListBox DisplayMemberPathPrice ItemsSource{Binding PathOrders}//StackPanelStackPanel Grid.Row1 Grid.Column0ListBox x:NamegroupListBox ItemsSource{Binding PathOrders}ListBox.ItemTemplateDataTemplateTextBlockTextBlock Text{Binding Price}/TextBlock - TextBlock Text{Binding Volume}/TextBlock/TextBlock/DataTemplate/ListBox.ItemTemplateListBox.GroupStyleGroupStyleGroupStyle.HeaderTemplateDataTemplateTextBlock Text{Binding PathName} FontWeightBold ForegroundWhite BackgroundLightGreen Margin0,5,0,0 Padding3//DataTemplate/GroupStyle.HeaderTemplate/GroupStyle/ListBox.GroupStyle/ListBox/StackPanelButton Grid.Row2 Grid.Column0 ContentIncrease Price ClickIncreaseButton_Click/Button Grid.Row2 Grid.Column1 ContentDecrease Price ClickDecreaseButton_Click//Grid /WindowMainWindow.xaml.cs using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Globalization; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; using System.Windows.Data;namespace DataView;public class ViewModelBase : INotifyPropertyChanged {public event PropertyChangedEventHandler? PropertyChanged;protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}protected virtual bool SetPropertyT(ref T member, T value, [CallerMemberName] string? propertyName null){if (EqualityComparerT.Default.Equals(member, value)){return false;}member value;OnPropertyChanged(propertyName);return true;} } public class Order : ViewModelBase {public decimal price 0;public decimal Price { get price; set SetProperty(ref price, value); }public int volume 0;public int Volume { get volume; set SetProperty(ref volume, value); }public DateTime orderDate DateTime.Now;public DateTime OrderDate { get orderDate; set SetProperty(ref orderDate, value); }public string image string.Empty;public string Image { get image; set SetProperty(ref image, value); } } public class ProductByPriceFilterer {public ProductByPriceFilterer(decimal minimumPrice){MinimumPrice minimumPrice;}public decimal MinimumPrice { get; set; }public bool FilterItem(Object item){Order? order item as Order;if (order ! null){return order.Price MinimumPrice;}return false;} } public class PriceRangeProductGrouper : IValueConverter {public int GroupInterval { get; set; }public object Convert(object value, Type targetType, object parameter, CultureInfo culture){decimal price (decimal)value;if (price GroupInterval){return string.Format(Less than {0:C}, GroupInterval);}else{int interval (int)price / GroupInterval;int lowerLimit interval * GroupInterval;int upperLimit (interval 1) * GroupInterval;return string.Format({0:C} to {1:C}, lowerLimit, upperLimit);}}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotSupportedException(This converter is for grouping only.);} } public partial class MainWindow : Window {public MainWindow(){InitializeComponent();myGrid.DataContext this;InitOrders();InitView();}public void InitOrders(){Order order1 new Order();Order order2 new Order();Order order3 new Order();Order order4 new Order();order1.Price 100;order1.Volume 100;order1.Image image1.gif;order2.Price 1000;order2.Volume 100;order2.Image image2.gif;order3.Price 10000;order3.Volume 10000;order3.Image image3.gif;order4.Price 100000;order4.Volume 10000;order4.Image image4.gif;Orders.Add(order1);Orders.Add(order2);Orders.Add(order3);Orders.Add(order4);}private void InitView(){View (ListCollectionView)CollectionViewSource.GetDefaultView(Orders);if(View ! null){View.CurrentChanged new EventHandler(view_CurrentChanged);View.SortDescriptions.Add(new SortDescription(Volume, ListSortDirection.Ascending));View.SortDescriptions.Add(new SortDescription(Price, ListSortDirection.Descending));View.GroupDescriptions.Add(new PropertyGroupDescription(Volume));View.IsLiveFiltering true;View.LiveFilteringProperties.Add(Price);}}public ObservableCollectionOrder Orders { get; set; } new();private ListCollectionView? View;private void cmdPrev_Click(object sender, RoutedEventArgs e){View?.MoveCurrentToPrevious();}private void cmdNext_Click(object sender, RoutedEventArgs e){View?.MoveCurrentToNext();}private void view_CurrentChanged(object? sender, EventArgs e){lblPosition.Text Record (View?.CurrentPosition 1).ToString() of View?.Count.ToString();cmdPrev.IsEnabled View?.CurrentPosition 0;cmdNext.IsEnabled View?.CurrentPosition View?.Count - 1;}public decimal MinPrice { get; set; } 200;private ProductByPriceFilterer? filterer;private void cmdFilter_Click(object sender, RoutedEventArgs e){if (View ! null){filterer new ProductByPriceFilterer(MinPrice);View.Filter new Predicateobject(filterer.FilterItem);}}private void cmdRemoveFilter_Click(object sender, RoutedEventArgs e){if (View ! null){View.Filter null;}}private void IncreaseButton_Click(object sender, RoutedEventArgs e){foreach(var order in Orders){order.Price * 10;}}private void DecreaseButton_Click(object sender, RoutedEventArgs e){foreach (var order in Orders){order.Price / 10;}} }
http://www.tj-hxxt.cn/news/229880.html

相关文章:

  • 网站建设 预算江华网站建设
  • 培训网站设计简单的网页开发
  • 中国建设银行官网站金银纪念币网页设计图片怎么放进去
  • 网站建设网络推广广告语网站建设外包公司容易被客户投诉吗
  • 在网站里继费nas可以做网站吗
  • 卓越 网站wordpress vul
  • dedecms做网站怎么查看wordpress不会发送电子邮件
  • 网站后端开发软件网站开发招聘名称
  • 网站建站方式有哪些企业网站模板是什么
  • 网站图片都是站外连接对seo518机械加工网
  • 眉山网站建设建筑公司名称大全简单大气
  • 网站建设个人网上银行wordpress主题异次元软件世界
  • 网站公司的利润军事热点事件2022
  • 做的网站为什么图片看不了怎么办音乐网站怎么建设
  • 如何建设一个电子商务网站深圳注册公司需要哪些材料和流程
  • 徐州市中心做网站的公司招聘网站大多用源码来做吗
  • 汉化主题做网站百度图片收录提交入口
  • 傻瓜式网站制作软件信誉好的公司官网建设
  • 广州自助企业建站模板淘宝运营培训多少钱
  • 大连网站开发 选领超科技创作者计划
  • 房产门户网站平台搭建wordpress如何换主题
  • 中小企业网站制作多少钱quiz在哪个网站做
  • 北京住房和城乡建设局门户网站江西省南昌市建筑工程网
  • wordpress怎么关注站点网站建设 月嫂 模板
  • 怎么仿网站免费域名网站黄
  • 临沂培训学校网站建设网站网站制作需要多少钱
  • 营销网站建设合同快速排名优化怎么样
  • 凡科网站建设公司成品直播源码
  • 网站 只收录首页新房装修
  • 保健品网站怎么做的网站建设创意