WPF
zLulus
博客园地址:https://www.cnblogs.com/Lulus;
github:https://github.com/zLulus;
QQ:865514198;
CSDN维护较少,有事QQ联系。
展开
-
WPF 手写板
效果如图引用IACore.dllIALoader.dllIAWinFX.dllMicrosoft.Ink.Analysis.dllMicrosoft.Ink.dllSystem.Windows.Interactivity.dll关键代码通过RecognizeCommand获得StrokeCollection,笔画集合<InkCanvas x:Name="inkCanvas" Background="Transparent"> <i:Interaction.T原创 2022-03-16 10:25:16 · 647 阅读 · 0 评论 -
WPF ComboBox设置选项与反显
效果如下:初始化后根据数据源反显选项,根据操作修改、清空数据源数据结构internal class SettingWithComboBoxDemoViewModel : INotifyPropertyChanged{ public ObservableCollection<FruitViewModel> Fruits { get; set; } private FruitViewModel selectFruit; public FruitViewModel原创 2022-03-16 10:21:24 · 1281 阅读 · 0 评论 -
WPF ListBox虚拟化
在ListBox加载大量数据的情况下,如果不进行虚拟化,内存将逐渐增大,长时间运行后将造成卡顿所以需要虚拟化写法<ListBox x:Name="listBox" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True"> <ListBox.ItemsPanel> <ItemsPanelTemplate &g原创 2022-03-16 10:20:42 · 1135 阅读 · 0 评论 -
WPF 数据绑定:数据源Source-目标Target
数据源Source-目标Target数据源实现INotifyPropertyChanged接口,实现“通知”目标实现依赖属性举例后台的数据源,实现INotifyPropertyChanged接口,实现“通知”public class Student : INotifyPropertyChanged{ public event PropertyChangedEventHandler PropertyChanged; private string _name; public原创 2020-12-17 14:05:45 · 616 阅读 · 0 评论 -
WPF 依赖属性
概念依赖属性就是自己自己没有值,通过Binding从数据源获得值,就是依赖在别人身上,拥有依赖属性的对象称为依赖对象应用依赖属性的场景1、在样式中设置属性。2、属性支持数据绑定。3、使用动态资源引用设置属性。4、从元素树中的父元素自动继承属性值。5、属性可进行动画处理。6、属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告。7、使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。依赖对象创建时并不包含原创 2020-12-17 14:03:50 · 1188 阅读 · 0 评论 -
WPF 选择文件夹
111原创 2020-12-14 15:48:43 · 1958 阅读 · 0 评论 -
WPF 路由
举例:窗口-用户控件-布局控件-…-按钮按钮的点击事件:先由按钮的Click相应,然后….,然后布局控件,然后用户控件,然后窗口类似异常,直到“处理完成”(实际上一般按钮自己处理即可)路由事件路由优先级:local>trigger>setter在local中设置了宽度,trigger的修改则无效了...原创 2020-12-13 12:05:13 · 137 阅读 · 1 评论 -
WPF 线程操纵UI问题
WPF只允许UI线程修改UI,其他线程必须通过Invoke、委托(安全性)Winform可以开启/关闭“只允许UI线程修改UI”在WPF中非UI线程修改UI的方法:Dispatcher非UI线程直接修改UI,会报错System.InvalidOperationException:“调用线程无法访问此对象,因为另一个线程拥有该对象。”正确的做法是使用DispatcherDispatcher简单暴力,适合小工作量的修改一些界面内容长期后台工作应该考虑使用BackgroundWorker,有很多相关原创 2020-12-13 12:03:40 · 640 阅读 · 2 评论 -
WPF x:Static
用途:访问代码中的变量等后台定义一个变量public partial class GetStaticFromBackgroundCode : Window{ public static string Name = "这是来自后台的静态变量"; public GetStaticFromBackgroundCode() { InitializeComponent(); }}前端访问<TextBox Text="{x:Static local:G原创 2020-12-13 11:59:53 · 244 阅读 · 0 评论 -
WPF x:ArrayExtension
<Window.Resources> <x:ArrayExtension x:Key="array" Type="{x:Type sys:Int32}"> <sys:Int32>20</sys:Int32> <sys:Int32>21</sys:Int32> <sys:Int32>22</sys:Int32> </x:ArrayExtensio原创 2020-12-13 11:58:52 · 148 阅读 · 0 评论 -
WPF xmlns
xmlns=xml namespace 导入命名空间,相当于C#中的usingxmlns有几种不同的形式xmlns为url网址一般是大公司,url固定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/2原创 2020-12-13 11:57:45 · 1180 阅读 · 0 评论 -
WPF MultiBinding
<StackPanel> <Slider x:Name="sl1" Minimum="10" Maximum="100"/> <Slider x:Name="sl2" Minimum="10" Maximum="100"/> <Label x:Name="label13" Background="Yellow" Foreground="Black"> <Label.Content> &原创 2020-12-13 11:55:03 · 361 阅读 · 0 评论 -
WPF 资源文件加载(Pack URI 方案)
Pack URI在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括:1.指定当应用程序第一次启动时显示的用户界面 (UI)2.加载图像3.导航到页4.加载不可执行的数据文件此外,可以使用 URI 标识和加载位于各种位置的文件,这些位置包括:1.当前程序集2.所引用的程序集3.相对于程序集的某个位置4.应用程序的源站点为了提供从这些位置标识和加载上述类型的文件的一致机制,WPF 利用了 pa原创 2020-12-13 10:10:11 · 638 阅读 · 0 评论 -
WPF 控件
分类所有的wpf控件都是继承自Control内容控件条目控件文本控件 范围控件内容控件最大的特征就是有一个Content属性,Content接收的是一个Object类型内容控件只能由单一元素充当其内容内容控件包括Button、ToggleButton、RadioButton等条目控件条目控件用于显示列表化的数据,内容属性的名称为Items或ItemSource,有自己的条目容器条目控件包括ComboBox、ContextMenu、ListView等文本控件有一个Text属性文原创 2020-12-12 13:15:51 · 81 阅读 · 0 评论 -
WPF Expander
实现折叠列表的效果<Expander Header="水果列表"> <StackPanel> <RadioButton Content="苹果"></RadioButton> <RadioButton Content="香蕉"></RadioButton> </StackPanel></Expander>效果如下:...原创 2020-12-12 13:15:01 · 256 阅读 · 0 评论 -
WPF ToolTip
<Button Content="指向我" Margin="100"> <Button.ToolTip> <StackPanel> <GroupBox Header="你喜欢什么水果?"> <GroupBox.Content> <StackPanel> <TextB原创 2020-12-12 13:13:44 · 155 阅读 · 0 评论 -
WPF 用户控件(UserControl)
简介"用户控件"继承自UserControl,而UserControl继承自ContentControl,也就是内容控件UserControl和Window是一个层次上的,都有xaml和cs文件流程创建用户控件写好用户控件<UserControl x:Class="WpfDemo.UserControlDemo.OwnUserControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta原创 2020-12-12 11:43:36 · 13769 阅读 · 0 评论 -
WPF Tag
标签属性,用于存放任何东西,所有控件都有Tag属性Tag可以用来存放存放图层uri访问地址等等控件模板的数据获取XXX.Tag as YYY举例:<Button Content="点击我获得Tag属性的内容" Height="100" Width="150" Tag="这是Tag的内容" Click="ButtonBase_OnClick"></Button>private void ButtonBase_OnClick(object sender, RoutedE原创 2020-12-12 11:41:55 · 1432 阅读 · 0 评论 -
WPF RadioButton
同属一个GroupName则互斥,只能选择一个<StackPanel Orientation="Vertical"> <Label Content="Group1:水果"></Label> <RadioButton GroupName="Group1" Content="苹果"></RadioButton> <RadioButton GroupName="Group1" Content="荔枝"></Ra原创 2020-12-12 11:40:11 · 493 阅读 · 1 评论 -
WPF CheckBox IsHitTestVisible
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <CheckBox Grid.Column="0"原创 2020-12-12 11:39:03 · 543 阅读 · 0 评论 -
CefSharp For WPF基本使用
Nuget引用CefSharp.WpfCefSharp.Commoncef.redist.x64cef.redist.x86直接搜索安装CefSharp.Wpf即可,因为CefSharp.Wpf依赖于其他三个包,所以会自动安装四个包先更改设置指定特定的平台,x64或者x86,默认是Any CPU不进行配置的话,CefSharp是不支持Any CPU的WPF写法xmlns:cefSharpWPF="clr-namespace:CefSharp.Wpf;assembly=CefShar原创 2020-12-12 11:36:27 · 1842 阅读 · 0 评论 -
ListBox 实现多行多列定制内容显示
效果如图关键代码<ListBox Name="imageListBox" ItemsSource="{Binding }" Width="{Binding ElementName=listBoxShowImages,Path=Width,Mode=OneWay}" Loaded="imageListBox_Loaded"> <ListBox.ItemsPanel> <ItemsPanelTemplate>原创 2020-12-12 11:25:43 · 4052 阅读 · 0 评论 -
WPF DataGrid DataGridTemplateColumn
设置单元格的样式<DataGrid.Columns> <DataGridTextColumn Header="检测项目" Binding="{Binding ItemName}" Width="*" /> <DataGridTemplateColumn Header="详细" Width="80" > <DataGridTemplateColumn.CellTemplate> <DataTem原创 2020-12-12 11:25:22 · 2271 阅读 · 1 评论 -
WPF Tab切换顺序设置
使用TabIndex设置顺序<StackPanel Orientation="Vertical"> <Button Content="Button1" TabIndex="0"></Button> <Button Content="Button2" TabIndex="1"></Button> <Button Content="Button3" TabIndex="2"></Button>原创 2020-12-11 10:54:43 · 1057 阅读 · 1 评论 -
WPF Margin和Padding
margin是自己与父容器的间距padding是自己与子控件的间距<Grid Background="AntiqueWhite"> <Border Margin="10" Padding="20" Background="CadetBlue"> <Button Background="BurlyWood"></Button> </Border></Grid>效果如图所示Border通过Mar原创 2020-12-11 10:48:43 · 1731 阅读 · 0 评论 -
WPF style原则问题
就近原则1、“行内”覆盖“嵌入”,“嵌入”覆盖“外部”Style.xml<Window.Resources> <Grid.Resources> ….中间层 <Button.Resources> </Button.Resources> </Grid.Resources> </Window.Resources> 举例下例中,Button显示Coral原创 2020-12-11 10:45:19 · 331 阅读 · 0 评论 -
WPF style的继承
第一种方式:瞄准控件的基类如下例所示,继承ContentControl的控件,都可以使用这个Style<Window.Resources> <Style x:Key="ContentControlStyle" TargetType="ContentControl"> <Setter Property="Background" Value="Pink"></Setter> <Setter Property="Fo原创 2020-12-11 10:41:05 · 1246 阅读 · 0 评论 -
WPF style文件的指定
新建资源文件写资源文件<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfDemo.Style"> <Styl原创 2020-12-11 10:38:08 · 205 阅读 · 0 评论 -
WPF Template简介
分类ControlTemplateItemsPanelTemplateDataTemplate样式Style和模板Template对比Style:样式,风格Template:模版,某种控件长什么样子Style依赖原始控件,对控件的已有属性进行改造Template天马行空,实现对控件颠覆式的改造Style中可以包含TemplateStyle嵌套Template<Window.Resources> <Style TargetType="CheckBox" x:原创 2020-12-11 10:36:35 · 758 阅读 · 0 评论 -
WPF ControlTemplate
ControlTemplate:外观定制<Window.Resources> <ControlTemplate x:Key="CheckBoxControlTemplate" TargetType="CheckBox"> <StackPanel> <Rectangle Name="breakRectangle" Stroke="Red" StrokeThickness="2" Width="20" Height="2原创 2020-12-11 10:34:53 · 306 阅读 · 0 评论 -
WPF DataTemplate
DataTemplate作用是布局+数据绑定使用DataTemplate同时完成样式布局和数据绑定<Window.Resources> <DataTemplate x:Key="PersonDataTemplate"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition原创 2020-12-11 10:29:24 · 215 阅读 · 0 评论 -
WPF ItemsPanelTemplate
用以定义集合控件的容器外观,如ListBox,Combox 等等使用一个自定义的ListBox用以说明,其默认外观是上下排列,这里修改成横向排列<Window.Resources> <DataTemplate x:Key="PersonDataTemplate"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"原创 2020-12-11 10:28:10 · 1161 阅读 · 0 评论 -
WPF HierarchicalDataTemplate
针对具有分层数据结构的控件设计的,比如说TreeView,相当于可以每一个层级上做DataTemplateXmlDataProvider:数据源,写在Resources下<XmlDataProvider x:Key="Info" XPath="Nations"> <x:XData> <Nations xmlns=""> <Nation Name="中国"> <Provin原创 2020-12-11 10:26:43 · 926 阅读 · 0 评论 -
WPF Binding控件某个属性
<Grid Margin="60"> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="*"></RowDefinition> </G原创 2020-12-10 16:25:52 · 474 阅读 · 0 评论 -
WPF DataGridTemplateColumn
DataGridTemplateColumn自定义单元格样式<DataGrid Grid.Row="0" Name="BasicRuleDataGrid" PreviewMouseWheel="BasicRuleDataGrid_OnPreviewMouseWheel" VerticalScrollBarVisibility="Auto" HorizontalScrollBa原创 2020-12-10 16:25:03 · 577 阅读 · 0 评论 -
WPF DataGrid 触发器
<DataGrid.RowHeaderStyle> <Style TargetType="DataGridRowHeader"> <Style.Triggers> <DataTrigger Binding="{Binding Type}" Value="1"> <Setter Property="Background" Value="DeepSkyBlue"><原创 2020-12-10 16:22:57 · 916 阅读 · 0 评论 -
WPF 异常处理
思路较好的两种处理方式1、在发生异常这一级处理2、当很多地方出现相同的异常,统一抛到App级中,用统一的方法处理(自己写一个异常类)全局异常处理在App里面,处理异常,并标记为“已处理”public App(){ //处理UI线程异常 Application.Current.DispatcherUnhandledException += CurrentDomain_UnhandledException;}private static void CurrentDomain原创 2020-12-10 16:22:02 · 234 阅读 · 0 评论 -
WPF Convert和RelativeSource
自定义Converter后台Converter类实现接口IValueConverter方法Convert是值->UI方法ConvertBack是UI->值初始化走Convertpublic class ColorConvert : IValueConverter{ public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { /原创 2020-12-10 16:20:32 · 262 阅读 · 0 评论 -
WPF 窗口图标与背景
效果如图图标IconIcon="Images/icon.jpg"背景图Background<Window.Background> <ImageBrush ImageSource="Images/background.jpg"></ImageBrush></Window.Background>完整代码:<Window x:Class="WpfDemo.WindowIconAndBackground.WindowIconAndBa原创 2020-12-10 16:18:43 · 794 阅读 · 0 评论 -
WPF 无边框实现拖动效果
这是在做弹幕的时候遇到的一个需求 透明背景,拖动弹幕=.=private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ base.OnMouseLeftButtonDown(e); // Begin dragging the window this.DragMove();}示例代码NoneBorder...原创 2020-12-10 15:10:14 · 221 阅读 · 0 评论