软件开发过程中,我们经常会遇到各种设计问题,例如如何管理对象之间的关系、如何优化代码的可复用性和可维护性等等。为了解决这些问题,我们可以使用设计模式。
本片文章分享一下之前遇到的WPF应用在触摸屏下使用时的两个问题。
具体场景就是一个配置界面, ScrollViewer
中包含一个StackPanel
然后纵向堆叠,已滚动的方式查看,然后包含多个 TextBlock
、 TextBox
以及DataGrid
,期间遇到了两个问题:
ScrollViewer
)的情况下,默认包含触底反馈的功能,就是触摸屏滑动到底或从底滑到顶,界面都会出现抖动的情况。DataGrid
中时,无法滚动界面。在之前写的一篇文章【WPF --- 如何以Binding方式隐藏DataGrid列】中,我先探索了 DataGridTextColumn
为什么不在可视化树结构内?又给出了解决方案,使用 Freezable
,该抽象类是 DependencyObject
的子类,能使用依赖属性在 Xaml
进行绑定,它承载了 DataContext
且有属性变化通知功能,触发 VisibilityConverter
转换器,实现了预期功能。
然后有群友问了这样一个问题:
这里有两个问题:
RelativeSource
或者 ElementName
访问到可视化树中的数据,为何可以通过 resource
的方式访问?Freezable
类为何能够中转数据,DependencyObject
不行?那么本篇文章就来探索一下 Freezable
实现了上述功能的原理是什么?
如题,在VS中如何调试 .Net 源码呢?
一般来说,VS2022,都是默认启用 F12 转到定义能够看到源码,如果大家发现自己无法使用 F12 查看源码,可以在 "工具" -> "选项" -> "文本编辑器" -> "C#" -> "高级" -> "转到定义",勾选所有选项就对了。