gpt4 book ai didi

没有 XAML 的 WPF

转载 作者:行者123 更新时间:2023-12-03 06:19:31 27 4
gpt4 key购买 nike

从架构上来说,我认为 WPF 非常令人惊叹。总的来说,我非常喜欢底层渲染/动画的内部工作原理。模板和样式设置的灵 active 非常令人印象深刻。

但我讨厌 XAML - 我觉得它使很多事情变得复杂。我已经在大大小小的应用程序中使用过它,并且我发现自己多次试图弄清楚如何在 XAML 中执行某些操作,其基本原理是基本的,但语法很古怪。不仅如此,我多次想知道解析/绑定(bind)的某些部分有多重。 (我知道它已编译,但我不确定运行时仍评估多少)

XAML 只是构建和加载可视化树的一种方法。是否有任何框架可以简化以非 XML、基于代码(但仍然主要是声明性)方式构建可视化树的框架?具体来说,我对能够在保留 MVVM 方法的同时缓解以下任何问题的框架感兴趣:

  1. 强类型绑定(bind)。指定 ViewModel 必须符合特定类型。我认为 BaseBinding 在底层使用了反射,并且我对其速度有点怀疑,更不用说损坏的绑定(bind)很烦人。

  2. 更快的绑定(bind),非 INotifyPropertyChanged捆绑。看起来像是某种BindableProperty<T>可以创建,并且绑定(bind)可以直接监听该绑定(bind),而不是接收所有 ViewModel 属性更改。与字符串参数相比,使用直接回调似乎也更有优势。

  3. 不同的资源管理方法;同样,某种类型的强类型字典可能会非常好。我几乎希望将样式视为 lambda 或捕获强类型方面的东西。

总而言之,有哪些框架是基于非 XAML、适合 MVVM 并且是强类型的?

最佳答案

我支持您使用无 Xaml 的 WPF。我喜欢 WPF 的布局和绑定(bind)功能,但我也讨厌 XAML。我希望 WPF 可以用纯 C# 编写,有一些优点:

  • 对象和集合初始值设定项可以替换 Xaml 实例化。 (遗憾的是xaml更喜欢自上而下而不是按钮向上)。
  • 绑定(bind)转换器可以只是 lambda。
  • 样式可以只是实例化后修改对象的 lambda,不臃肿 <Setter>语法。
  • DataTemplates 只是在给定对象的情况下创建控件的 lambda
  • DataTemplateSelectors 只是一个调用其他 DataTemplate 的 DataTemplate lambda。
  • ItemsControl 只是一个 Foreach,它接受 lambda (DataTemplate),并在将新项目添加到基础集合时再次调用它。
  • x:Names 只是变量名称。
  • 不需要很多 MarkupExtensions
    • x:静态
    • x:Type(特别是复杂的泛型!)
  • UserControls 只是函数。

我认为 WPF 的设计添加了太多的复杂性。从过去的 FrontPage 到 Razor,Web 开发已经输掉了这场战斗。

关于没有 XAML 的 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5729087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com