关于XAML,C#和WPF的更多思考的更多思考

PXE 批量安装 Ubuntu 20.04 原文链接:https://www.cpweb.top/1698 一、介绍   Ubuntu 20.04 的服务器安装程序支持新的操作模式:自动安装(automated installation)。自动安装可以通过自动安装配置提前回答所有这些配置问题,并使安装过程无需任何交互即可运行。   在 Ubuntu 18.04 中,用的应答文件是 preseeds(预配置文件),它基于 debian-installer(aka di)来实现自动安装的。需要注意的是,如果你使用的是 cobbler,那你应.... 阅读详情

原文:More thoughts on more thoughts on XAML, C# and WPF 

 Charles在他的blog上,对我提出的关于WPF数据上下文和WPF可以忽略C#代码的阐述提出了疑问。

我也会尽我所能捍卫我的阐述。

具体来讲,我很少从DependencyOjbect继承对象,并且就从我观察到的来看,离开了它,XAML和WPF在数据绑定上运行的都还不错。

XAML所依赖的只是公有的可设置的属性和不带参数的公有的构造函数。单向的数据绑定也有类似的需求。

对于双向的数据绑定,如果你执行了旧的pre-WPF接口INotifyPropertyChanged,运行起来也很棒,并且这种绑定实现起来也特别不值一提。

下面是我写的一段C#代码,我希望通过它来说明这个问题:

 

public   class  Author : INotifyPropertyChanged  {
  
string name;
  
bool lovesXaml;

  
public bool LovesXaml {
    
get { return lovesXaml; }
    
set { lovesXaml = value; Notify("LovesXaml"); }
  }

  
public string Name {
    
get { return name; }
    
set { name = value; Notify("Name"); }
  }


// boilerplate INotifyPropertyChanged code
  void Notify(string name) {
    
if (PropertyChanged != null)
      PropertyChanged(
this, new PropertyChangedEventArgs(name));
  }


  
public event PropertyChangedEventHandler PropertyChanged;

}


 

接下来是一个简单的WPF/XAML窗口,我们可以用一个DataTemplate来生成和编辑它:

 

< Window  x:Class ='Petzold.Window1'
   
xmlns ='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
   
xmlns:x ='http://schemas.microsoft.com/winfx/2006/xaml'
   
xmlns:local ='clr-namespace:Petzold' 
   
Title ='Petzold'
>
  
< ItemsControl >
       
< local:Author  Name ='Charles  Petzold' LovesXaml ='true'/>
       
='Chris  Sells' LovesXaml ='false'/>
       
='Ian  Griffiths' LovesXaml ='true'/>
       
='Chris  Anderson' LovesXaml ='false'/>
       
='Adam  Nathan' LovesXaml ='true'/>
   
>


   
< Window .Resources >
      
< DataTemplate  DataType ='{x:Type  local:Author}' >
        
< StackPanel >
          
< StackPanel  Orientation ='Horizontal'>
             
> Name: Label>
             
<TextBox Text='{Binding Path=Name}'/>
          
>
          
<CheckBox IsChecked='{Binding LovesXaml}'>Loves XAML CheckBox>
        
StackPanel>
      
DataTemplate>
    
Grid.Resources>
  
Grid>
Window>

我能够生成一个Author类,这个类可以存在于一个分离的Dll中,除了对mscorlib.dll和system.dll的依赖外,它不再具有另外的依赖性,并且这个类运行起来表现也相当的良好。


duilib 实现截屏选取功能分析 本文关注点不再截屏而是截屏选取工具 1首先肯定是个透明窗口,且置顶并且是工具窗口(任务栏不显示窗口图标) 窗口样式 <?xml version="1.0" encoding="utf-8"?> <Window shadowattached="false"> <Box > <VBox name="track_box" margin="200,200,200,200" bkimage="file='screen_bord... 阅读详情

相关推荐

避坑指南:C#用S7NetPlus读写西门子PLC字符串(String/WString)的完整方案

本文详细解析了C#通过S7NetPlus读写西门子PLC字符串(String/WString)的完整方案,包括内存布局、编码差异和字节序处理等关键技术细节。提供了实战优化的代码示例和常见问题排查指南,帮助开发者避免乱码、截断等常见陷阱,提升工业自动化项目的开发效率。

weixin_32956805的博客 323

数据模板DataTemplate

1.赋值,这个只是例子,赋值的方式很多,这只是其中一点,在UI上看的清楚一点 <Window.Resources> <!--这里赋值,对象Test在本地--> <x:Array x:Key="stringArray" Type="local:Test"> <local:Test Code="1" /> <local:Test Code="2" /> ..

lw8014的博客 403

概率论与数理统计基础概念与重要定义汇总

文章目录一、随机事件和概率1:互斥,对立,独立事件的定义和性质。2:概率,条件概率和五大概率公式3:古典型,几何型概率和伯努利试验 一、随机事件和概率 1:互斥,对立,独立事件的定义和性质。 互斥事件\color{red}\textbf{互斥事件}互斥事件 事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件。也可叙述为:不可能同时发生的事件。如A∩B为不可能事件(A∩B=Φ),那么称事件A与事件B互斥,其含义是:事件A与事件B在任何一次试验中不会同时发生。 则P(A+B)=P(A)+P(B)(这个公

csyifanZhang的博客 1万+

C# WPF入门学习主线篇(二十三)—— 控件模板(ControlTemplate)和数据模板(DataTemplate)

在本篇博客中,我们详细介绍了WPF中的控件模板(ControlTemplate)和数据模板(DataTemplate)的定义和应用。通过具体的代码示例,展示了如何自定义按钮的外观以及如何展示列表中的数据项。这些模板的使用不仅提升了应用程序的视觉效果,还增强了其灵活性和可维护性。希望通过这篇博客,读者能够深入理解和掌握WPF中模板的使用技巧。

weixin_56595425的博客 2254

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

从编解码芯片看Tesla T4的隐藏实力:双NVDEC如何实现70路1080P解码?

本文深入剖析了英伟达Tesla T4显卡的隐藏实力,重点解读其独特的双NVDEC硬件解码器设计如何突破性能瓶颈。通过分析Turing架构、对比HEVC/H.264解码差异,并结合驱动与SDK优化,揭示了实现高达70路1080P视频流并发解码的原理与实战配置,为云游戏、直播转码等高并发场景提供高效解决方案。

weixin_29209801的博客 489

高精度ADC TLA2518与MKV58微控制器的信号采集系统设计

模数转换器(ADC)是将模拟信号转换为数字信号的核心器件,其精度和稳定性直接影响数据采集系统的性能。SAR架构ADC凭借快速响应和低功耗特性,在工业自动化和精密测量领域广泛应用。本文以TLA2518高精度ADC与MKV58F1M0VLQ24微控制器的组合为例,深入解析信号链设计中的关键技术难点,包括基准电压稳定性优化、SPI接口时序控制以及数字滤波算法实现。针对工业环境中的EMI干扰问题,提供了PCB布局规范和噪声抑制方案,这些工程实践经验对于电机控制、振动监测等需要高信噪比的应用场景具有重要参考价值。

weixin_34037515的博客 592

10、高阶ΣΔ调制器设计与优化

本文深入探讨了高阶ΣΔ调制器的设计与优化技术,重点介绍了NTF零点优化方法,通过分散单位圆上的零点分布提升信噪失真比(SQNR)。文章分析了量化噪声耦合技术如何有效提高噪声整形阶数,并对比了CIFB、CIFF、CRFB和CRFF等不同架构的性能特点。同时,详细阐述了基于稳定性与性能权衡的设计流程,结合Schreier的Delta-Sigma Toolbox实现NTF综合与仿真验证。内容涵盖从理论推导到实际设计步骤,为高阶ΣΔ调制器的稳定性提升与性能优化提供了系统性指导。

tgb345678的博客 134

WPF学习感受

WPF是微软推出的一个先进的界面类库,具有高度的可定制性,吸收了很多html的思想,打破了传统的假面编程思路,很有创造力。 尤其是当WPF采用了XAML作为界面描述语言之后,更加简化了WPF编程的难度,专门设计的Visual studio编程IDE对于WPF的支持更是无以复加,称得上是绝配。 但是,学习了这么久的WPF,给我的一个感触就是:垃圾。

heisehuanyin的博客 3836

37、基于视觉的轻量级面部呼吸和心率测量技术

本文提出了一种基于视觉的轻量级面部呼吸和心率测量技术,通过远程光电容积脉搏波描记法(RPPG)和面部振动信息实现非接触式生理信号采集。创新性地结合框选和特征点选择多个感兴趣区域(ROI),并采用光流跟踪、主成分分析(PCA)和集成经验模态分解(EEMD)等方法优化信号处理流程。实验结果表明,该方法在测量精度和稳定性方面优于传统方法,并可在树莓派4等低功耗平台上实现实时运行,具有广泛的应用前景。

r7s8t的博客 307

设备接入与APP(应用程序)接入华为云iotDA平台的详细操作步骤及获取方式

设备及APP(应用程序) 登录 IoTDA 平台所需的 入场与操作清单内容,提供逐项详细操作步骤和获取方式,并穿插贴士便于理解与实际操作落地。内容基于 华为云 IoTDA 控制台 和 IAM 控制台 的实际使用路径整理。

hy行者勇哥的博客 3063

C# WPF 数据绑定同步

WPF里有几个关于后台数据绑定的核心对象,但有些时候其使用方式却容易让人迷惑,甚至混淆。现在就来总结梳理一下,DataContext、Itemsource、Command、Binding、INotifyPropertyChanged、ObservableCollection。 首先从XAML上最简单的前台单向Binding开始: &lt;TextBlock Grid.Column="0" Te...

nightwizard2030的博客 2098

YOLOv13安装教程 手把手教你融合空间注意力机制(SAB)的RAB卷积模块 自动“聚焦”重要的特征 map指标提升8.96,准确率提升3.56

本文提出了一种改进的YOLOv13目标检测模型,通过引入RAB(残差注意力模块)显著提升了检测性能。实验结果显示,添加RAB模块后,mAP指标提升了8.96,准确率提高了3.56%。文章详细介绍了RAB模块的实现方法:1)采用多级残差连接增强特征提取能力;2)结合空间注意力机制(SAB)自动聚焦关键区域;3)通过1×1卷积实现通道维度压缩与恢复。同时提供了完整的模型移植方案,包括配置文件修改、任务处理代码调整以及模块实现细节,为YOLO系列模型的性能优化提供了有效参考。

FJN110的博客 647
上一篇: .Net Framework 3.5(a.k.a "逆戟鲸") Beta 1
下一篇: GET和人类 VS. 机器
techweb
博客等级 码龄19年 226粉丝 3842原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值