- 博客(17)
- 收藏
- 关注
原创 WPF-TextBox-PropertyChanged校验的小数点输入问题
当输入“0.0”时,先由ConvertBack从Target变更Source,再由Convert从Source转换回Target,在此过程中后端Binding的Source被修改为0,因此在Convert时也会return 0、而不是0.0,导致TextBox一输入“0.0”就会自动改为“0”。2、修改TextBox的Binding Mode为OneWaytoSource,解决了输入“0.0”后又被Convert成0的问题。针对上面的问题,做了一个违背MVVM架构的决定:在xaml.cs中直接赋初始值。
2025-05-16 10:40:28
293
原创 WPF-点击空白处让TextBox失去焦点
后续发现,如果Windows下有Combobox时,使用PreviewMouseDown会出现无法选中Combobox选项的问题,猜测可能是还没到给Combobox的SelectedItem赋值的时间、隧通事件已经将焦点转移,导致Combobox在被赋值SelectedItem时出现错误;改为冒泡事件MouseDown即可。参考一些资料,可在xaml最高层中增加鼠标事件、在鼠标点下后强行将焦点给到一个没用的TextBox,正在编辑的TextBox就可以失去焦点了。
2025-04-29 11:16:22
134
原创 C#-TreeView/PropertyChanged相关问题
在WPF MVVM INotifyPropertyChanged中,ViewModel在执行构造函数时View还未创建完毕,ViewModel的PropertyChanged还未被监听,因此PropertyChanged为null。其中TreeView、TreeViewItem的DataType设置为本层所需的对象类型,而ItemsSource则设置为下一层所需的对象集合,所以最后一层就不用设置ItemSources了。在使用CommmunityMVVMToolKit时则没有这个问题。
2025-04-24 18:41:32
122
原创 C#-TargetFrameworks多目标框架问题
原因可能是MSBuild编译时,项目引用会从obj\Release\ref\中引用dll,而MSBuild会因为多目标框架的原因、删除obj\Release\ref\下的内容,导致其他项目引用该项目时找不到dll了。原生成路径为bin\Debug or bin\Release,在打包时无法同时把4.5、6.0的dll一起打包,所以修改了OutputPath为bin\$(TargetFramework)\,虽然满足了打包条件,但为后续MSbuild埋了坑。1、4.5过低、nuget包版本不支持。
2025-04-22 16:56:48
240
原创 .net framework项目升级移植.net6
5、引用后nupkg出现了问题,报错“使用中央包版本管理的项目不应定义 PackageReference 项上的版本,但应定义 PackageVersion 项上的版本”,在Directory.Packages.props添加对应的PackageVersion项无用。3、返回到项目升级处,将所有文件进行升级;升级时出现了问题,找不到.net SDK,将C:\Program Files\dotnet\templates下的6.0.29文件夹复制到C:\Program Files\dotnet\sdk即解决;
2025-01-14 16:11:09
277
原创 WPF-Trigger
Style.Triggers:Condition中不能用SourceName,Setter中不能用TargetName,Property只能是当前Style的TargetType类型对象的。Template.Triggers:SourceName、TargetName和DataTrigger的ElementName必须限制本Template内。MultiDataTrigger:多个Condition的DataTrigger,每个Condition都是一个Binding-Value。
2024-12-31 17:58:32
151
原创 个人笔记-WPF-MarkupExtension实现校验转换器通知
为了避免每次触发事件时,都需要通知所有的属性来让属性再次过一遍Converter,使用了MarkupExtension,并在MarkupExtension触发事件OnTestChanged事件,在这个事件中让所有的TestBinding通知自己负责的所有属性再过一遍Converter。此处MarkupExtension实现了添加Validation和Converter的Binding,此Binding可以自己通知变更。MarkupExtension XAML标记扩展,让自己可以写一个XAML对象。
2024-11-29 18:57:36
180
原创 个人笔记-WPF-Validation增加Binding
随后定义了一个继承DependencyObject的对象X,X放到ValidationRule中,并且将上述资源的依赖属性Binding到X中的依赖属性上。注:如果还有Converter,请将Validation.Errors[0].ErrorContent改为Validation.Errors[1].ErrorContent。当时是校验出现了问题,textbox的文本内容从“abc”改回“abc”,因为其他的校验逻辑导致ValidationRule返回false了,后续就用了这种方法。
2024-11-28 19:48:52
207
原创 bat脚本-MSBuild编译指定项目并复制编译结果
2、AB\CD\xxxx_xxxx中,AB\CD为xxxx_xxxx项目在sln中的路径,_为非法字符的替换。本人有编译某个项目后,将编译生成文件复制到某个路径并运行的需求,写了简易bat,记录备忘。1、MSBUILD 为 C盘MSBUILD.exe路径的环境变量。3、start 后的 "" 使exe不按命令行运行,可直接启动。
2024-11-28 19:11:10
191
原创 个人笔记-paket打包dll
手动准备paket.template、paket.dependencies与.bat脚本。.bat脚本会在nupkg路径中生成对应.nupkg。
2024-07-17 14:23:15
154
原创 个人笔记-nuget打包dll
注:1、nuget包中打包的dll所需的另外的dll,不能放在files中引用进来,需要将另外的dll放在本地包路径下,并在nuspec的dependencies中进行添加。参考:https://www.cnblogs.com/zhaoxf-nx-pm-csharp-vb-381160500/articles/15717624.html。5. C#项目中安装此本地nupkg,nuget包管理器-设置- nuget包管理器-程序包源-加号增加-省略号选择路径-更新,以此设置本地包路径。
2024-07-09 10:07:22
533
原创 个人笔记-WPF-ValueConverter
在使用多值转换器时,出现了转换输入参数数据类型为int,导致Convert方法value数组参数,除了第一个参数正常外其余参数都为DependencyProperty.UnsetValue的情况,判断应该是数据传递时进行类型转换出了问题,后续直接传Object类型就没问题了。ConverterParameter可以向转换器的Convert方法传递parameter参数。ValueConversion不太确定,我这边有没有都能用。IMultiConverter:多值转换器,转换器输入的参数数量大于1。
2024-06-14 18:32:52
213
原创 个人笔记-C#-UI调度
实例属性,返回当前线程的调度程序,Invoke在当前线程操作UI控件。静态属性,返回主线程的调度程序,Invoke在主线程操作UI控件。尽量在主线程即UI线程上操作UI控件。
2024-06-07 10:43:46
287
原创 个人笔记-C#-BackgroundWorker
backgroundWorker.ReportProgress() -> 触发backgroundWorker.ProgressChanged-> backgroundWorker.ProgressChanged+= YourOwnStuff。backgroundWorker.RunWorkerAsync() -> 触发backgroundWorker.DoWork -> backgroundWorker.DoWork += YourOwnStuff。
2024-06-05 15:56:02
207
原创 个人笔记-C#-Dictionary-TryGetValue
Dictionary检索key值时无需再Contains判断,通过TryGetValue的返回的布尔值和引用类型来获得value值。
2024-06-05 13:32:55
372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人