专栏首页林德熙的博客WPF 在 XAML 写 C# 代码

WPF 在 XAML 写 C# 代码

本文告诉大家如何扔掉 cs 文件,在 xaml 写 C# 代码,将 xaml 和 C# 代码写在一个文件

在 WPF 的 XAMl 有一个小伙伴也许看到但是忽略的特性就是 x:Code 特性,这个特性在 UWP 版本被干掉了,因为太好用了

其实小伙伴忽略这个特性也是对的,因为从设计上这不是一个好的方案,将 XAML 和业务逻辑 C# 代码放在一个文件里面

但是可以用来做和界面十分相关的逻辑,此时放在 XAML 文件的 C# 代码会提高代码的相关性

请看下面代码

    <Grid>
        <Button Name="Button" HorizontalAlignment="Center" VerticalAlignment="Center"
                Click="Button_OnClick">按钮</Button>
        <x:Code>
            <![CDATA[
    void Button_OnClick(object sender, RoutedEventArgs e)
    {
        Button.Content = "欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客";
    }
  ]]>
        </x:Code>
    </Grid>

此时不需要在 xaml.cs 文件里面添加按钮点击的事件的方法

本文代码放在 github 欢迎小伙伴访问

但是这个方法有限制的是,因为无法添加using语句,因此限制了很多功能

不过其实这个是可以优化的,也许可以设计为 @code 的写法

    <Grid>
        <Button Name="Button" HorizontalAlignment="Center" VerticalAlignment="Center"
                Click="Button_OnClick">按钮</Button>
    @code
    {
        void Button_OnClick(object sender, RoutedEventArgs e)
        {
            Button.Content = "欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客";
        }
    }
        </x:Code>
    </Grid>

然后构建的时候将 @code 替换为 x:Code 的写法,这个方法也是可以的

现在 WPF 开源了,小伙伴可以进行随意的更改,如果构建自己的私有的 WPF 框架版本,请看 手把手教你构建 WPF 框架的私有版本

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • win10 uwp 使用 ScaleTransform 放大某个元素

    本文告诉大家如何通过 ScaleTransform 放大元素 放大一个元素的方法有很多个,通过 ScaleTransform 放大是比较清真的

    林德熙
  • 如何在 UWP 使用 wpf 的 Trigger 安装 Behaviors以前的代码UWP 使用 Trigger

    本文需要告诉大家,如何使用 Behaviors 做出 WPF 的 Trigger ,需要知道 UWP 不支持 WPF 的 Trigger 。

    林德熙
  • C# dotnet 自己实现一个线程同步上下文

    昨天鹏飞哥问了我一个问题,为什么在控制台程序的主线程等待某个线程执行完成之后回来,是在其他线程执行的。而 WPF 在等待某个线程执行完成之后,可以回到主线程执行...

    林德熙
  • 如何衡量一个人的 JavaScript 水平?

    之前刷知乎的时候,看到这么一个问题:“如何衡量一个人的 JavaScript 水平?[2]”然后自己也不要脸地回答了一下这个问题。以下是我的答案:

    用户1462769
  • 图解闭包

    说到 闭包 ,这是js不得不提的一个特性,很多传统语言都不具备这样的特性,比如JAVA C等等。 之前看书的时候,总是理解不好什么是闭包!下面就通过手绘一张...

    用户1154259
  • SQL注入靶场之SQLiLabs搭建指南

    据统计,互联网上SQL注入漏洞占整体的百分之六十左右,所以学好SQL注入的漏洞挖掘将十分重要。

    轩辕小子
  • require与imoprt的区别

    在讨论require和import的区别之前,我们首先要了解的是,es6module的代码最终都会被打包工具转化为require才能实行,关于这俩的区别网上有大...

    挥刀北上
  • 打造基于Nginx的敏感信息泄露检测系统

    *本文原创作者:f4ckbaidu,本文属FreeBuf原创奖励计划,未经许可禁止转载

    FB客服
  • Java8集合源码解析-Hashtable源码剖析1 概述2 源码解析rehash方法3 总结

    JavaEdge
  • BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)

    现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的

    attack

扫码关注云+社区

领取腾讯云代金券