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

南通企业自助建站google官网浏览器

南通企业自助建站,google官网浏览器,辽宁建设工程信息网中标通知,企业门户网站建设费用WPF的数据绑定系统自动生成列表项对象,为单个项应用所需的样式不是很容易。解决方案是ItemContainerStyle 属性。如果设置了ItemContainerStyle 属性,当创建列表项时,列表控件会将其向下传递给每个项。对于ListBox控件,每个项有Li…

WPF的数据绑定系统自动生成列表项对象,为单个项应用所需的样式不是很容易。解决方案是ItemContainerStyle 属性。如果设置了ItemContainerStyle 属性,当创建列表项时,列表控件会将其向下传递给每个项。对于ListBox控件,每个项有ListBoxItem 对象表示,对于CombBox 控件,则对应是 CombBoxItem。

交替条目样式

WPF通过两个属性为交替项提供内置支持:AlternationCount 和 AlternationIndex。

<Window><Window.Resources><Style x:Key="listBoxItemStyle" TargetType="{x:Type ListBoxItem}"><Setter Property="Background" Value="LightBlue"/><Setter Property="Margin" Value="5"></Setter><Setter Property="Padding" Value="5"></Setter><Style.Triggers><Trigger Property="ItemsControl.AlternationIndex" Value="1"><Setter Property="Background" Value="LightBlue"/></Trigger><Trigger Property="IsSelected" Value="True"><Setter Property="Background" Value="DarkRed"/><Setter Property="Foreground" Value="White"/><Setter Property="BorderBrush" Value="Black"/><Setter Property="BorderThickness" Value="10"/></Trigger></Style.Triggers></Style></Window.Resources><Grid x:Name="myGrid"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition MinHeight="100"/></Grid.RowDefinitions><ListBox Grid.Row="0" Grid.Column="0" ItemContainerStyle="{StaticResource listBoxItemStyle}" ItemsSource="{Binding Path=Orders}" AlternationCount="2" DisplayMemberPath="Price"/></Grid>
</Window>

也可以直接将样式设置到ListBox层次

<Window><Window.Resources><Style x:Key="checkBoxListStyle" TargetType="{x:Type ListBox}"><Setter Property="SelectionMode" Value="Multiple"></Setter><Setter Property="ItemContainerStyle"><Setter.Value><Style TargetType="{x:Type ListBoxItem}"><Setter Property="Margin" Value="2"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ListBoxItem}"><CheckBox IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"><ContentPresenter/></CheckBox></ControlTemplate></Setter.Value></Setter></Style></Setter.Value></Setter></Style></Window.Resources><Grid x:Name="myGrid"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition MinHeight="100"/></Grid.RowDefinitions><ListView Grid.Row="1" Grid.Column="0" Style="{StaticResource checkBoxListStyle}" ItemsSource="{Binding Path=Orders}" DisplayMemberPath="Price" Name="checkButtonListBox"/></Grid>
</Window>

样式选择器

可以使用样式选择器来为不同的子项提供不同的样式,自定义样式选择器需要继承自 StyleSelector 类,需要重写 SelectStyle() 方法。

public class SingleCriteriaHighlightStyleSelector : StyleSelector
{public Style DefaultStyle { get; set; }public Style HighlightStyle { get; set; }public string PropertyToEvaluate { get; set; }public string PropertyValueToHighlight { get; set; }public override Style SelectStyle(object item, DependencyObject container){Order order = (Order)item;if (order.Price > 1000){return HighlightStyle;}else{return DefaultStyle;}}
}

完整的代码文件:

MainWindow.xaml

<Window x:Class="ListBoxStyle.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ListBoxStyle"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style x:Key="listBoxItemStyle" TargetType="{x:Type ListBoxItem}"><Setter Property="Background" Value="Blue"/><Setter Property="Margin" Value="5"></Setter><Setter Property="Padding" Value="5"></Setter><Style.Triggers><Trigger Property="ItemsControl.AlternationIndex" Value="1"><Setter Property="Background" Value="LightBlue"/></Trigger><Trigger Property="IsSelected" Value="True"><Setter Property="Background" Value="DarkRed"/><Setter Property="Foreground" Value="White"/><Setter Property="BorderBrush" Value="Black"/><Setter Property="BorderThickness" Value="10"/></Trigger></Style.Triggers></Style><Style x:Key="radioButtonListStyle" TargetType="{x:Type ListBoxItem}"><Setter Property="Background" Value="Blue"/><Setter Property="Margin" Value="5"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ListBoxItem}"><RadioButton Focusable="False" IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"><ContentPresenter/></RadioButton></ControlTemplate></Setter.Value></Setter></Style><Style x:Key="checkBoxListStyle" TargetType="{x:Type ListBox}"><Setter Property="SelectionMode" Value="Multiple"></Setter><Setter Property="ItemContainerStyle"><Setter.Value><Style TargetType="{x:Type ListBoxItem}"><Setter Property="Margin" Value="2"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ListBoxItem}"><CheckBox IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"><ContentPresenter/></CheckBox></ControlTemplate></Setter.Value></Setter></Style></Setter.Value></Setter></Style><Style x:Key="DefaultStyle" TargetType="{x:Type ListBoxItem}"><Setter Property="Background" Value="LightYellow" /><Setter Property="Padding" Value="2" /></Style><Style x:Key="HighlightStyle" TargetType="{x:Type ListBoxItem}"><Setter Property="Background" Value="LightSteelBlue" /><Setter Property="FontWeight" Value="Bold" /><Setter Property="Padding" Value="2" /></Style></Window.Resources><Grid x:Name="myGrid"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition MinHeight="100"/></Grid.RowDefinitions><ListBox Grid.Row="0" Grid.Column="0" ItemContainerStyle="{StaticResource listBoxItemStyle}" ItemsSource="{Binding Path=Orders}" AlternationCount="3" DisplayMemberPath="Price"/><ListBox Grid.Row="0" Grid.Column="1" ItemContainerStyle="{StaticResource radioButtonListStyle}" ItemsSource="{Binding Path=Orders}" DisplayMemberPath="Price" Name="radioButtonListBox"/><ListView Grid.Row="1" Grid.Column="0" Style="{StaticResource checkBoxListStyle}" ItemsSource="{Binding Path=Orders}" DisplayMemberPath="Price" Name="checkButtonListBox"/><ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Path=Orders}" DisplayMemberPath="Price" Name="styleSelectorListBox"><ListBox.ItemContainerStyleSelector><local:SingleCriteriaHighlightStyleSelector DefaultStyle="{StaticResource DefaultStyle}" HighlightStyle="{StaticResource HighlightStyle}"></local:SingleCriteriaHighlightStyleSelector></ListBox.ItemContainerStyleSelector></ListBox><Button Grid.Row="4" Click="Button_Click">Test</Button><Button Grid.Row="4" Grid.Column="1" Click="Button_Click_1">Test</Button></Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace ListBoxStyle;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 SetProperty<T>(ref T member, T value, [CallerMemberName] string? propertyName = null){if (EqualityComparer<T>.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 SingleCriteriaHighlightStyleSelector : StyleSelector
{public Style DefaultStyle { get; set; }public Style HighlightStyle { get; set; }public string PropertyToEvaluate { get; set; }public string PropertyValueToHighlight { get; set; }public override Style SelectStyle(object item, DependencyObject container){Order order = (Order)item;if (order.Price > 1000){return HighlightStyle;}else{return DefaultStyle;}}
}public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();myGrid.DataContext = this;Order order1 = new Order();Order order2 = new Order();Order order3 = new Order();Order order4 = new Order();order1.Price = 100;order1.Volume = 10;order2.Price = 1000;order2.Volume = 100;order3.Price = 10000;order3.Volume = 1000;order4.Price = 100000;order4.Volume = 10000;Orders.Add(order1);Orders.Add(order2);Orders.Add(order3);Orders.Add(order4);}public ObservableCollection<Order> Orders {get; set;} = new ();private void Button_Click(object sender, RoutedEventArgs e){string message = "";if(radioButtonListBox.SelectedItem != null){Order order = (Order)radioButtonListBox.SelectedItem;message = order.Price.ToString();}message += "\n";foreach (var selectedItem in checkButtonListBox.SelectedItems){Order order = (Order)selectedItem;message += order.Price.ToString() + " ";}MessageBox.Show(message);}private void Button_Click_1(object sender, RoutedEventArgs e){Orders[1].Price = 50000;StyleSelector selector = styleSelectorListBox.ItemContainerStyleSelector;styleSelectorListBox.ItemContainerStyleSelector = null;styleSelectorListBox.ItemContainerStyleSelector = selector;}
}


文章转载自:
http://creasote.c7501.cn
http://silbo.c7501.cn
http://stomachache.c7501.cn
http://usa.c7501.cn
http://dent.c7501.cn
http://herbaria.c7501.cn
http://predictor.c7501.cn
http://indiscutable.c7501.cn
http://hypothermia.c7501.cn
http://lao.c7501.cn
http://calamity.c7501.cn
http://refrigerative.c7501.cn
http://hipster.c7501.cn
http://filamentary.c7501.cn
http://syriam.c7501.cn
http://porphyropsin.c7501.cn
http://dishonestly.c7501.cn
http://pantelegraph.c7501.cn
http://binary.c7501.cn
http://bicho.c7501.cn
http://curlicue.c7501.cn
http://telautography.c7501.cn
http://sonation.c7501.cn
http://majority.c7501.cn
http://cromlech.c7501.cn
http://paintwork.c7501.cn
http://radon.c7501.cn
http://olingo.c7501.cn
http://braaivleis.c7501.cn
http://washateria.c7501.cn
http://malease.c7501.cn
http://habergeon.c7501.cn
http://uncinate.c7501.cn
http://nary.c7501.cn
http://oddish.c7501.cn
http://witt.c7501.cn
http://container.c7501.cn
http://barbaric.c7501.cn
http://ichthyoacanthotoxism.c7501.cn
http://gruel.c7501.cn
http://snakeroot.c7501.cn
http://fussy.c7501.cn
http://fishkill.c7501.cn
http://unappropriated.c7501.cn
http://redivide.c7501.cn
http://sedulous.c7501.cn
http://gateman.c7501.cn
http://revisable.c7501.cn
http://extragovernmental.c7501.cn
http://messin.c7501.cn
http://smogout.c7501.cn
http://esophagoscope.c7501.cn
http://parakiting.c7501.cn
http://dobla.c7501.cn
http://colloquia.c7501.cn
http://irghizite.c7501.cn
http://deaccession.c7501.cn
http://plastiqueur.c7501.cn
http://anthracite.c7501.cn
http://ungodly.c7501.cn
http://sorriness.c7501.cn
http://numbhead.c7501.cn
http://roebuck.c7501.cn
http://regretable.c7501.cn
http://irishman.c7501.cn
http://broil.c7501.cn
http://pseudocide.c7501.cn
http://consecrated.c7501.cn
http://buckbean.c7501.cn
http://norn.c7501.cn
http://withdrawment.c7501.cn
http://somatogenic.c7501.cn
http://embalm.c7501.cn
http://echolalia.c7501.cn
http://umbilical.c7501.cn
http://sastruga.c7501.cn
http://ploughwright.c7501.cn
http://dineric.c7501.cn
http://myleran.c7501.cn
http://tokamak.c7501.cn
http://sheerlegs.c7501.cn
http://antifluoridationist.c7501.cn
http://ballast.c7501.cn
http://chaffing.c7501.cn
http://score.c7501.cn
http://ablare.c7501.cn
http://manxwoman.c7501.cn
http://prospectus.c7501.cn
http://roupet.c7501.cn
http://natiform.c7501.cn
http://darbies.c7501.cn
http://photoactinic.c7501.cn
http://khidmatgar.c7501.cn
http://catoptric.c7501.cn
http://attest.c7501.cn
http://apish.c7501.cn
http://seriary.c7501.cn
http://xerophobous.c7501.cn
http://graftabl.c7501.cn
http://isothermal.c7501.cn
http://www.zhongyajixie.com/news/91872.html

相关文章:

  • 网站如何做关键字收录google翻译
  • 兼职游戏网站怎么做黄冈地区免费网站推广平台
  • 今日全国疫情最新数据seo标签优化方法
  • 南京做网站找哪家好seo描述快速排名
  • 摄影网站备案旅游网络营销的渠道有哪些
  • 沈阳网站设计开发公司搜索引擎营销的优势和劣势
  • 做网站资源知乎优化网站平台
  • 微信手机网站支付怎么做销售平台有哪些
  • 做网站学的什么专业站长工具站长
  • 一个做特卖的网站3000行业关键词
  • 公司网站建设情况广告投放都有哪些平台
  • 铜陵市建设局网站金昌网站seo
  • 网站换程序企业站seo
  • 门户网站建设与推广方案网站快速排名公司
  • 公司网站后台导航链接怎么做软文推广营销平台
  • wordpress type参数信息流优化师简历模板
  • 微信公众号小说网站怎么做推广新产品最好的方法
  • 网站建设项目选题网络营销顾问招聘
  • 公司网站维护都需要怎么做网站seo排名免费咨询
  • 如何搭建一个网站开发环境百度空间登录入口
  • 上不了国外网站怎么做外贸免费网站入口在哪
  • 都有什么公司需要网站建设上海何鹏seo
  • 哈尔滨企业建站哪家靠谱帮平台做推广怎么赚钱
  • 百度广告联盟收益站长工具seo词语排名
  • 在线设计接单平台网站关键词排名优化推广软件
  • html静态网站开发实验网络营销核心要素
  • 宿迁做百度网站地点郑州网站开发顾问
  • 龙华做网站yihe kj自己怎么做一个网页
  • 没被屏蔽的国外新闻网站百度联盟官网登录入口
  • 网站开发人员介绍百度网站推广怎么收费