![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WPF
楚楚3107
一点一滴的积累
展开
-
WPF 简单的ComboBox自定义样式。
ComboBox样式显示效果原创 2022-09-28 14:19:38 · 4885 阅读 · 1 评论 -
关于WPF template使用FindName查找控件方法问题。
原因是控件初始化时还未生成,如果想占用这种方法设置ControlTtemplate中的属性。要把它放到Load方法中。可是如果这个方法在UserControl中使用,是找不到模板中的控件的。函数中已找到模板中的Button,这样就可以后台修改属性了。这个方法在Window内使用是没有问题的。...原创 2022-08-22 08:30:08 · 1733 阅读 · 0 评论 -
WPF如何将DataGrid.SelectedItems 转换成List
前台传递SelectedItems参数方法:<DataGrid.ContextMenu> <ContextMenu StaysOpen="true"> <MenuItem Header="删行"> <i:Interaction.Triggers> <i:EventTrigge原创 2021-08-31 09:14:01 · 1152 阅读 · 0 评论 -
WPF textBox限制输入数字方法
第一步:在TextBox中添加属性 InputMethod.IsInputMethodEnabled="False"<TextBox x:Name="Barcode" Width="90" Height="26" Margin="2" BorderThickness="2" InputMethod.IsInputMethodEnabled="False" PreviewTextInput="Barcode_PreviewTextInput"> ...原创 2021-08-25 16:34:12 · 1368 阅读 · 0 评论 -
c# WPF InvalidOperationException异常的几种常见原因
什么是InvalidOperationException操作无效异常。当方法调用对对象的当前状态无效时引发的异常。继承ObjectExceptionSystemExceptionInvalidOperationException详细说明如果调用方法失败是由无效参数以外的其他原因导致的,则使用该异常。通常, 当对象的状态不支持方法调用时, 将引发此异常。例如, 以下方法或原因会引发异常nvalidOperationException: IEnumerator.MoveN.原创 2021-08-20 17:01:26 · 6678 阅读 · 1 评论 -
WPF 使用Command,CommandParameter向 MVVM传递多个参数
有的时候需要向ViewModel传递两个CommandParameter参数。需要实现一个Converter。然后就可以实现多个参数传递啦。本案例以MVVM为基础做的Demo。还有一个编写的按钮样式的Style。可已给需要的同学做个参考。工程代码放在最后了。好了。看下如何传递参数的吧,如下图。(obj中已经传递过来两个参数。一个是打开的窗口。负责逻辑处理后关闭窗口,一个是datagrid。用于操作DataGrid控件。)工程代码:核心代码:<Window x:Class="...原创 2021-08-01 21:12:00 · 10759 阅读 · 0 评论 -
WPF DataGrid 获取选中的当前行某列值
方法一: DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem; string result = mySelectedElement.Row[0]ToString(); 方法二: var a = this.dataGrid1.SelectedItem; var b = a as DataRowView; string result = b.Row[0].ToString(); ...转载 2021-07-26 09:00:35 · 2086 阅读 · 0 评论 -
WPF 获取当前窗口的可视化元素方法
制作WPF好看的控件外观,必须要学会使用控件模板。了解控件模板就需要知道和了解逻辑树和可视化树。以下案例就是通过System.Windows.Media.VisualTreeHelper类来查看一个窗口的可视化数构成。先看一下运行效果:通过一个递归遍历依次将当前控件的子元素通过TreeView展现出来。以下是核心代码:VisualTreeDisplay.xaml<Window x:Class="SimpleWindow.VisualTreeDisplay" xmlns原创 2021-05-27 11:08:25 · 1055 阅读 · 0 评论 -
WPF TabControl 中TabItem Header数据绑定方法
在写代码过程中发现直接一下方法中时无法直接进行数据绑定的: <TabControl x:Name="ScanPaperSet" Foreground="Black" BorderBrush="LightBlue" BorderThickness="0"> <TabItem x:Name="item1" Header = “{Binding ...}”> </TabItem>原创 2021-05-26 11:39:33 · 2098 阅读 · 0 评论 -
C# Bitmap 与 Bytes数组,Bitmap与Image 控件的转换
按照下边转换就可以了。速度比较快。 /// <summary> /// 将BitMap转换成bytes数组 /// </summary> /// <param name="bitmap">要转换的图像</param> /// <returns></returns> private byte[] BitMapToByte(System.Drawing.Bitmap bitmap) { // 1.先将BitMap原创 2021-03-24 15:28:58 · 5040 阅读 · 8 评论 -
c# Bitmap 转bitmapImage高效方法
网上有很多人都记录以下方法进行转换,这个方法存在一个问题,就是低效,我在进行图片拼接时,图片大了之后就会很慢。所以我有找了一个高效的替代方法。 public BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap) { System.Drawing.Bitmap bitmapSource = new System.Drawing.Bitmap(bitmap.Width, bitmap.Height原创 2021-03-05 16:51:57 · 2603 阅读 · 0 评论 -
WPF 引用其他项目时,出现设置 connectionId 时引发了异常。”,行号为“7”,行位置为“9”。” 问题解决办法
我出现这个问题的原因是因被引用的项目的目标平台是x64。项目的平台是Any CPU。解决办法:将被引用项目的目标平台与项目平台生成保持一致可以解决该问题。右键引用项目->点击生成-> 目标平台 (修改Any CPU);...原创 2021-01-27 15:17:13 · 1585 阅读 · 0 评论 -
WPF Canvas上鼠标事件不响应解决办法。
刚刚写个案例在测试,发现不管是窗口,还是自定义控件,Canvas直接写上鼠标事件不响应,网上找了下,说要设置背景颜色,我看这个说的相对靠谱。记录一下:没有背景颜色设置(显式或通过样式等)的控件将默认为背景颜色为null – 使其不可击中测试。如果将背景设置为“透明”(或任何非null({x:Null})),那么它将能够获取鼠标事件。...原创 2021-01-10 22:07:50 · 1413 阅读 · 0 评论 -
WPF限制TextBox只能输入数字
KeyDown事件private void tbCount_KeyDown(object sender, KeyEventArgs e) { TextBox txt = sender as TextBox; //屏蔽非法按键 if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal || e.Key.转载 2021-01-08 13:05:20 · 642 阅读 · 0 评论 -
WPF CheckBox自定义样式
今天整理了两个CheckBox样式,用鼠标选择时都是滑动效果,觉得还不错,特记录一下,效果图如下:以下是代码,直接粘贴的创建的Windows中,运行就可以了。<Window.Resources> <LinearGradientBrush x:Key="CheckedBlue" StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="#FF285AB3" Offset="0"原创 2021-01-07 22:36:25 · 1086 阅读 · 0 评论 -
WPF Image控件添加图片,图标不显示解决办法
1.将要使用的图片或者Icon文件放入工程下。2.右键->添加->现有项-> 选中要添加的图片或者Icon。3.右键选中图片-> 属性-> 在面板中选择“生成操作”->将内容修改为“Resource”。4.引用:<Image Source="项目名称;图片路径/名称.png" />5.重新生成解决方案。这步很重要!!!不然还是不显示图片的。...原创 2020-12-30 14:48:30 · 2871 阅读 · 0 评论 -
WPF中获取Canvas中控件的坐标方法
Canvas.GetTop(Button);Canvas.GetLeft(Button);原创 2020-12-11 14:35:23 · 2036 阅读 · 0 评论 -
C# WPF Image控件的使用
在WPF的Image控件中显示静态的图像string path= System.Environment.CurrentDirectory+ "\\logo.png";//获取图片绝对路径BitmapImage image = new BitmapImage(new Uri(path, UriKind.Absolute));//打开图片logo.Source = image;//将控件和图片绑定,logo为Image控件名称...转载 2020-12-09 10:29:14 · 837 阅读 · 0 评论 -
WPF 使用e.GetPosition获取Image控件坐标时,Image.Source是否为null对获取坐标结果的影响
今天做项目时,想要获取Canvas中的一个Image控件的相对坐标。发现获取到鼠标按下的坐标值总是对不上。经过反复的尝试,发现Image控件的Source是否为空会对获取坐标的结果有影响。举个例子吧,在Grid中放置一个Canvas,在后台代码中添加一个image控件。xaml<Window x:Class="Canvas_WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat原创 2020-11-19 18:38:06 · 2283 阅读 · 0 评论 -
WPF 在Canvas中动态设置控件的坐标
Canvas.SetTop(mylabel1, 100);Canvas.SetLeft(mylabel1, 100);原创 2020-11-18 16:25:56 · 1451 阅读 · 0 评论 -
WPF 使用TransformToVisual进行坐标转换
在做关于画图的项目的时候,经常会用到坐标转换。关于静态的坐标转换比较好得到,使用Point p = e.GetPosition(“控件名称”)就可以获取。如果画图过程中所有的控件都是动态生成的,外控件套着很做子空间,子控件也有子控件。有几种方法可以做到,1是可以通过查找父类名称的方法,找到最外层的控件,通过e.GetPosition("")直接获取。也可以使用TransformToVisual方法获取。本文将着重说明下TransformToVisual如果查找相对父控件坐标。设计图:xaml:原创 2020-11-07 15:58:16 · 1389 阅读 · 0 评论 -
WPF(C#)中Bitmap与BitmapImage相互转换
一、WPF的Image控件中设置ImageSourceimage1.Source = new BitmapImage(new Uri(@"image file path", Urikind.RelativeOrAbsolute));还可以使用:System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read);byte[] buff转载 2020-11-02 13:35:52 · 2276 阅读 · 0 评论 -
WPF 通过设置Canvas.ZIndex属性修改图像的图层
对Canvas.ZIndex,MSDN的解释是:获取或设置Canvas中对象的 z 顺序呈现行为。并附有以下示例代码: <Grid x:Name="LayoutRoot" Background="White"> <Canvas> <Ellipse Canvas.ZIndex="3" Canvas.Left="5" Canvas.Top="5" Height="200" Width="200" Stroke="Black" S..转载 2020-10-13 22:04:27 · 4160 阅读 · 0 评论 -
c# wpf DataTable System.DBNull的问题
今天在编写代码时,使用DataTable进行数据接收,如果接收到的数据与当前row数据对应就进行赋值,情景如下:foreach (DataRow temp in DataTable.Rows) { if ((double)temp["HiddenMaxValue"] >= 0) // 数据接收到这里出错 { }}报错如下:指定的转换无效,这是什么鬼,难道是列数据为空么,那就先判断一下是否为空吧。...原创 2020-07-30 23:35:38 · 518 阅读 · 0 评论 -
WPF ListBox,ListView添加ToolTip显示当前选择项
今天碰到一个需求,使用ListBox显示多文字。因为每个选项文字较长,ListBoxItem的宽度有限,这时候为了体现界面友好,增加ToolTip是一个好的选择:代码如下:MainWindow.xmal:<Window x:Class="_20200116_MVVM.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http...原创 2020-06-29 18:39:31 · 6026 阅读 · 0 评论 -
WPF 使用Path绘制几何图形
Path类继承自Shape,可以绘制很多简单的,复合的图形。Path类通过提供的Data属性,Data属性接受一个Geometry对象(我的理解就是Data要装什么集合图形呀),Geometry一共有7个派生类,说明如下:名称 说明 LineGeometry 绘制直线 RectangleGeometry 绘制矩形(包括原型拐角的举行) EllipseGeometr...原创 2020-05-02 22:34:14 · 4336 阅读 · 0 评论 -
WPF画图的 GeometryGroup的FillRule属性
FillRule为填充规则的意思,它有两个属性值,EvenOdd,Nonzero,如下表:FillRule 属性值 使用方法 EvenOdd(默认值) 就算计算某些东西是不是奇数,如果是是奇数则内部,填充;如果是偶数则外部,不填充。 Nonzero 就算计算某些东西是不是0,如果不是0则内部,填充;如果是0则外部,不填充。 ...原创 2020-04-06 21:50:48 · 1935 阅读 · 0 评论 -
WPF 通过获取DataTemplate模板中的其他数据
通过CheckBox的状态,获取对应的模板名称。代码如下:MainWindow.xaml:<Window x:Class="DataContent_Control.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://...原创 2020-03-26 22:44:03 · 628 阅读 · 0 评论 -
WPF 使用Application类操作多窗口方法
今天看到WPF编程宝典第七章Application类时,发现通过将一些窗口保存在Application类中时,可以更好的提现面向对象方法,始终使用为窗口类添加自定义方法,属性,事件,不需直接向外部公开窗口的字段,避免紧耦合。工程如下:App.xaml.csusing System;using System.Collections.Generic;using Sy...原创 2020-03-05 21:26:13 · 957 阅读 · 0 评论 -
WPF 使用DataTemplate + Binding 展示ListBox内容
先看下运行效果:项目框架如下:Car.cs:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WPFDatatemplate{ public class Car ...原创 2019-11-10 20:44:04 · 2296 阅读 · 0 评论 -
WPF 读取Xml文件并显示在ListView中
在编程中,经常会用到xml文件,今天写个博客记录一下如何读取的。先看xml文档,文档命名为RawData.xml,放在\bin\Debug下。<?xml version="1.0" encoding="utf-8" ?><StudentList> <Student Id = "1"> <Name>Tim</Name> &...原创 2019-10-05 10:42:24 · 1677 阅读 · 0 评论 -
WPF TextBox 绑定List集合
在学习深入浅出WPF第六章节Binding,敲写TextBox绑定List列表案例时,怎么也不能达到书上的效果,后来发现,书上的代码案例给错了。哎,这回记忆深刻了。特此写博客记录下。好了上代码。xmal代码如下:<Window x:Class="ListTest.MainWindow" xmlns="http://schemas.microsoft.com/winf...原创 2019-10-03 19:19:30 · 2463 阅读 · 0 评论 -
WPF 线程更新主线程UI方法
WPF禁止跨线程调用线程UI,需使用委托方式完成线程调用,以下线程更新主线程UI方法App.Current.Dispatcher.Invoke((Action)delegate(){ //要更新的UI代码 }...原创 2019-04-01 21:48:23 · 6504 阅读 · 0 评论