zoukankan      html  css  js  c++  java
  • C#学习☞WPF的一个有趣试验

    学习C#.net有两三个星期了, 怎奈书本略厚, 工作略繁杂, 于是各种跳章, 好不容易跳到了WPF的章节.

    看了<<C#与.NET4高级程序设计>>第27章, 就突然产生了一个想法.

    总觉得WPF是在跟网页制作较劲, 网页的HTML标签一行一行加载下来, 如果有一行button加载完了, 下面可以写一个js标签, 显示地执行一段函数.

    于是我想XAML是不是也能这样呢?

    比如, 在一个Button加载完之后执行一条语句, 跳一个MessageBox什么的? 可貌似, 在XAML中不能显式调用函数...

    正所谓初生牛犊不怕虎, 于是我这样做:

    1, 首先创建一个能在XAML中写的标签, 为了造成一层轻薄的假象, 这个标签就叫做Script好了~ Script标签下的只能调用函数...怎么调用呢? 于是我想到用属性调用. 这个属性拥有函数般的名字, 而它的value其实只是函数的参数...

    真正残念

        public class Script:UIElement
        {
            public string ShowMessage
            {
                set
                {
                    MessageBox.Show(value.ToString());
                }
            }
        }

    2, 在XAML中添加命名空间, 在这里我还算是老实地带上了local的前缀...

    <Window x:Class="WpfTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfTest"
            Title="MainWindow" Height="350" Width="525">

    3, 在window的内容布局控件中随便加点Button什么的, 然后把Script放在后面, 比如这样

        <StackPanel>
            <Button>1231231231</Button>
            <Button>1231231231</Button>
            <Button>1231231231</Button>
            <Button>1231231231</Button>
            <Button>1231231231</Button>
            <local:Script ShowMessage="haha" />
        </StackPanel>

    4, 运行...

    果然, 在Button add到StackPanel的Children中之后, 实例化Script并对这个带有函数般名字的属性ShowMessage设置的时候, MessageBox出现了.

    实验到此结束, 当然这个实验几乎没有任何意义. 不过本人算是心满意足地在XAML中显示调用了函数.

    然后, 这个时候, 对于习惯了C/C++编译后运行的我来说, 有趣的事情发生了.

    各位可以试着随意更改Script标签上面的按钮, 比如添加一个Button或是删除一个Button什么的, 随着设计器的刷新, MessageBox.Show(value.ToString())也将又一次地被执行到.

    哈哈, 少见多怪了. 但的确很有趣不是吗?

  • 相关阅读:
    删除文件时,提示 "操作无法完成..." 怎么处理
    对象的理解
    TP5架构下链接SQL数据库的一种方法
    关于URL隐藏index.php方法
    非典型的千万用户后台之路
    就这样,再见2015
    理想的程序员
    4个小例子告诉你:如何成为一名数据极客
    馆中窥职:小公司没那么糟糕
    JAVA设计模式详解(六)----------状态模式
  • 原文地址:https://www.cnblogs.com/pasoraku/p/2780327.html
Copyright © 2011-2022 走看看