‫欢迎回来｡
‫在本视频中, 我们将讨论I notify property
‫changed, 以及此接口, 该接口允许我们在属性发生更改时触发某些操作｡ 在上一个视频中,
‫我们使用绑定时看到了属性发生更改, 这次我们的操作略有不同,
‫您将亲自了解如何使用此接口｡
‫所以我想用一个堆栈面板来代替网格, 因为我想把东西堆起来,
‫首先, 我会把一个标签, 设置为第一个标签, 然后我会像这样关闭这个标签.
‫在它的下面我想有一个文本框, 我们可以在其中输入一个值｡
‫所以我不会在这里使用文本块文本框｡
‫我马上就把它关上｡
‫在文本框中, 我希望宽度为100像素, 高度为30像素｡
‫然后我想设置文本｡
‫现在文本应该被绑定了, 所以我将在这里使用数据绑定｡
‫我想使用的路径是1, 模式是2｡
‫我们已经看到了这个模式和这个路径的含义｡
‫现在让我们复制这段代码并复制到这里｡
‫所以我要复制并粘贴两次｡
‫所以这里的情况不太一样, 这是一个结果.
‫这就是结果, 这是第三个.
‫所以现在你可能会想, 这第一个是什么？
‫第二个和结果, 因为, 好吧, 我们有第一个和第二个等等｡
‫但这些只是内容｡
‫它们不是名字｡
‫为了连接或使用它们, 我们需要进入我们的代码, 因为我想在这里创建它们｡
‫所以我会创建一个新类, 因为我们会使用主窗口作为程序, 和程序很相似.
‫但是我想使用I notify changed, 为了使用这个接口, 我需要创建一个可以从它继承的新类｡
‫我在这里用了一个新类, 我把它叫做some, 因为我想做的是, 如果我们回到示例文件, 我们有数字1,
‫数字2和数字3.
‫我想要的是, 如果我在这里加上一个值, 在那里加上一个值,
‫那么底部的值应该自动等于之前两个值的和｡
‫好吧, 我会的
‫所以我要用一个新的类来实现｡
‫而这个类应该继承自我的notify属性发生了变化｡
‫又为了做什么？
‫要使用此属性, 我将通知属性更改｡
‫我们需要使用系统组件模型｡
‫所以我打算使用使用系统组件模型｡
‫现在你可以看到我们的界面是绿色的, 通常是浅绿色, 这是Visual
‫Studio中的界面颜色, 现在我可以修复这些潜在的错误｡
‫所以你看我需要实现接口｡
‫所以我打算这么做｡
‫如您所见, 我们更改了这个公共事件的属性和事件处理程序的属性｡
‫现在为了使用它, 我们需要创建一个私有方法, 名为void on property changed, 它将接受一个属性.
‫在我的例子中, 这个属性是一个字符串｡
‫我首先要检查属性是否发生了更改, 属性更改后不为空, 因此不等于null｡
‫因为如果是这样的话, 那我想打电话给酒店｡
‫属性已更改｡
‫这个点new属性改变了事件弧, 我将把它交给属性｡
‫因此, 属性更改了事件弧, 如您所见｡
‫需要字符串属性名称｡
‫而我要交的房产名称就是房产本身｡
‫在属性更改时, 调用这个属性, 我在这里输入一个属性.
‫好吧, 我会的
‫因此我们将简单地称之为属性更改事件｡
‫现在, 为了使用所有这些, 我们需要有几个属性｡
‫我将首先创建私有字段｡
‫一个私有字符串num one, 然后是一个私有字符串num two, 最后是一个名为result的私有字符串｡
‫现在我为所有这些创建属性｡
‫因此, 我将创建一个名为NUM one的属性｡
‫而且这个排名第一的属性应该和标准的属性稍有不同｡
‫所以我不会用这个基本的get和set, 我会用一个自定义的, 我会自己定义一个, 它不应该返回numone,
‫但是它应该返回well, 不是大写的, 不是属性的,
‫而是这个字段.
‫所以它将被重命名为返回数字1｡
‫所以小水一回来｡
‫如果我设置了某个值, 那么我就需要设置它的值｡
‫顺便说一下, 我在顶部使用了string, 所以我的属性也应该是string｡
‫所以我要返回第一个｡
‫现在如果有人试图设置数字1, 我想尝试解析它, 因为如果它不是用户输入的数字呢？
‫如果他输入了, 我不知道, 字母之类的东西呢？
‫然后我想抓住它, 改变它｡
‫我将使用INT number, 然后在这里创建一个新的boo, 我将执行,
‫result, 将是int, 尝试解析, 然后我将尝试解析这个值, 然后我将得到这个数字｡
‫所以我们之前看过try parse｡
‫它只是尝试解析给定的值, 如果成功了, 那么它就是真的.
‫如果它不起作用, 那么它将是假的｡
‫顺便说一句, 如果它的工作, 那么我们会得到的号码, 以及｡
‫如果我可以或者如果我得到一个正值我就说数字1就是这个值.
‫我还想改变的是, 触发器的属性改变了, 我将触发NUM｡
‫好吧, 我会的
‫如果值改变了, 我就改变这个属性.
‫现在我们还可以把它复制到第二个数字中｡
‫第二步我把它改成第二步.
‫也是一个数字, 这里是数字2, 那里也是.
‫最后, 我们需要一个属性来表示结果｡
‫我将创建一个公共字符串结果, 这个结果也将包含一个get和一个set.
‫所以这里的get会有一个结果, 是完整的第一次传递｡
‫加不是｡
‫Parrs夫妇两个｡
‫为什么我现在可以这么做？
‫因为我把它们归回, 每当我把它们设为1时, 我就是2.
‫所以这里的那些, 它们已经是整数了因为它们是集合, 只有当它们是数字时才有值.
‫否则它们将永远不会被设置｡
‫它们将是空的｡
‫然后我们需要在这里返回一些东西｡
‫所以我要把rest返回给string｡
‫如果有人想要设置结果, 我会简单地做以下的事情｡
‫所以set int的结果是int解析器｡
‫实际上和我们在这里做的一样, 只是我们不返回它, 而是设置它｡
‫所以结果是字符串的剩余部分｡
‫在这里, 我们把联合国的属性称为“已更改”, 这同样适用于我们的数字2和数字1｡
‫所以这有什么用｡
‫所以联合国的财产发生了变化｡
‫您可以回想一下, 它会变更属性的值｡
‫所以属性更改事件弧, 它将接受属性, 它将调用这个属性更改事件,
‫然后调用所有这些属性.
‫因此, 第一属性, 第二属性和结果一将被通知, 我们的结果应该被更改｡
‫所以我想要的是每次有人输入一个数字这个数字3也会被改变｡
‫在检查或测试之前, 我们需要进入｡ 0. 6文件并实际创建我们某个类的一个对象｡
‫我们已经创建了一些类, 接下来我将创建一个新对象.
‫我在这里创建它, 它不仅是一个对象, 还是一个属性.
‫所以某个对象将得到和设置｡
‫现在为了访问它, 我们也需要公开我们的一些｡
‫让我们把这个类设为公共的, 现在我们可以继续使用这个对象了.
‫现在我可以设置这个some对象, some对象在这里开始.
‫我会说这是一个新的和, 它的值不是1, 而是2, 它的值是3.
‫正如你所看到的, 我们必须在这里使用字符串, 因为否则它就不会工作, 因为那些属性, 它们是字符串,
‫对吗？
‫所以现在我需要调用或者设置的是将数据上下文设置为sum对象, 否则什么都不会发生.
‫现在让我们来运行这个｡
‫然后你看, 我们从来没有设置第三个, 这是结果, 也许它甚至更好, 如果我们真的把它称为结果｡
‫我们来把标签改成result或者是some｡
‫所以这就是总和｡
‫甚至可能是非1和非2｡
‫现在让我们再运行一次｡
‫你就在这儿
‫一加三等于四｡
‫现在我们把它改成25｡
‫正如你所见, 它改变了｡
‫现在, 我们将3的值更改为31｡
‫你看56号｡
‫现在, 如果我改变这里的值｡
‫你看, 它会回到它的正常值, 因为我们在《二传手》中所做的｡
‫如果有人试图设置结果, 我们只需要将结果设置为, 同样, 终端方的值, 1号和2号｡
‫所以如果我们试图设置字符串结果的结果, 它总是会返回到实际的结果｡
‫现在你可以用它来计算你想要的任何东西, 你会得到真实的的答案,
‫或者你的值的实时和｡
‫你可以再加一个, 或者你现在可以把它变成一个乘数.
‫但现在我知道这是相当多的设置, 我们必须做｡
‫所以我想和你们再真实的地说一遍｡
‫在XHTML文件中, 我们有三个标签和三个文本框, 它们只是UI元素, 对吗？
‫而每一个的文字都是相连的｡
‫所以这个有到数字1的路径, 这个有到数字2的路径, 这个有到结果的路径｡
‫这些就是这些｡
‫所以小水一个人｡
‫num two和num three属性｡
‫我们创建了一个额外的类, 它继承自I notify属性更改,
‫它是一个接口, 它有这个属性更改的事件处理程序, 它是一个事件, 我们只调用属性更改.
‫现在, 我们创建了一个名为on property change的方法, 每次更改一个属性时都会调用该方法,
‫并且一旦设置了属性, 就会执行此操作｡
‫所以我们有一个属性, 如果有人试图设置这个值, 我们就调用这个属性.
‫在这里我们设置了属性, 所以我们说, 好吧, 给我一个属性, 然后我们把这个属性修改为给定的值｡
‫所以我们基本上是在设置它, 但同时, 我们不仅仅是在setter中设置当前正在设置的那个｡
‫所以我们不仅在这里设置了num, 1, 而且我们还设置了结果, 我们没有设置,
‫在这里你可以看到这行, 它设置了这个字段, 所以它改变了这个私有字符串字段,
‫这个on属性的改变实际上改变了属性本身｡
‫所以它会改变属性本身的值, 但同时也会改变属性结果的值.
‫所以每次我们改变num一的值时, 它都会更新我们的结果, num二也是如此,
‫我们的结果也是如此, 我说过每次结果改变时, 我们都要继续,
‫调用这个属性改变方法.
‫好吧, 我知道了
‫现在你看到了如何使用AI, 通知属性改变了如何使用这个接口, 你可以用多种不同的方式使用它｡
‫每当属性发生变化时使用它真的很有趣｡
‫假设颜色发生了变化, 您希望触发一个事件,
‫该事件将产生一些奇特的动画, 或者有人按下了一个按钮, 该按钮将发生变化, 并且您希望程序中的某个属性发生变化, 之后会发生一些很棒的事情｡
‫你可以用这个来设置这些｡
‫我通知了属性更改接口｡
‫当然, 你需要做的是在你使用的类和通知属性之间创建一个继承关联｡