‫欢迎回来｡
‫在本视频中, 我们将建立清单方块｡
‫您可以看到这里有一个包含条目的小列表框｡
‫所以我们有拜仁慕尼黑有三分或进球, 然后我们有真实的马德里有两个进球, 比赛就快结束了｡
‫所以我们在这里使用了多个不同的元素, 我们还没有用过｡
‫当我选择一个并点击这个按钮显示选中时, 一个小消息框弹出, 告诉我选中的框, 它给我一些进一步的信息,
‫或者至少在这个例子中, 它只是给我这些信息｡
‫当然, 你可以在这里添加更多的信息,
‫这样你就可以建立一个小应用程序, 它从互联网上获取数据, 并随时更新, 简单地向你显示当前比赛的当前得分｡
‫好吧, 我会的
‫让我们开始吧｡
‫我将为此创建一个新的项目, 我将其命名为列表框｡
‫现在我们开始, 已经有了这个名称｡
‫所以我将它命名为C, 在这里我将主要使用XAML｡
‫所以我要把它全部拖起来｡
‫我们有这个井, 我们的形象在这里或一个窗口在这里仍然｡
‫但现在我想再次使用网格, 当然, 我将使用多行｡
‫现在, 让我们继续创建列定义､ 行定义以及类似的内容｡
‫顺便说一下, 我们实际上只需要两列, 所以不会那么复杂｡
‫所以我们只有两个不同的列｡
‫我们没有多行, 因此不需要行定义｡
‫但对你来说, 如果你能回忆起如何做到这一点, 那总是很好的｡
‫因此, 您需要先定义列, 然后在此处定义您的列｡
‫接下来, 我将定义一个宽度为星星的列, 并定义一个宽度为100的列｡
‫所以我想有一个按钮, 第二列, 差不多｡
‫这就是我想在这里使用的｡
‫好吧, 我会的
‫这是我的两列｡
‫这一个将包含列表框, 而右边的一个将只包含这个巨大的按钮, 我们可以单击它,
‫一旦我们想获得更多的信息匹配｡
‫现在我们来创建一个列表框, 我将使用列表框关键字, 这个列表框将获得一个名称｡
‫我将把这个列表框称为matches, 并将内容水平对齐｡
‫水平内容对齐, 我将拉伸它, 这样它将拉伸列表框的内容｡
‫顺便说一句, 这个lbw匹配应该是这个名字｡
‫所以姓陈凯的是火柴｡
‫好的, 接下来, 我需要一个特定的项目模板｡
‫因此, 列表框可以有一个项目模板｡
‫所以我打算使用列表框点项模板｡
‫在那里我可以有一个数据模板｡
‫因此, 我将创建一个新的数据模板, 现在我终于可以继续添加文本块或信息｡
‫正如你所看到的, 它的结构是我们还没有看到的, 但这是完全好的｡
‫你马上就会看到它是如何工作的｡
‫因此, 我们有这个列表框, 然后是项目模板, 然后是数据模板｡
‫在这里, 我们可以显示数据, 我将在这里使用网格｡
‫所以我要用一个页边距为2的网格｡
‫而且此网格还需要列定义｡
‫因此, 我将创建一个新的网格点列定义标记｡
‫然后在这里定义列定义或创建列定义｡
‫顺便说一句, 我这里也要保持简单｡
‫我想要的只是一个宽度, 它将占用与所有其他列相同的空间｡
‫所以这里有五列｡
‫一个是球队的一个, 第二个是得分｡
‫第三个人又得分了｡
‫第四个人是第一队或第二队｡
‫最后我们有了进展｡
‫所以我们想知道比赛已经进行了多远｡
‫现在我想有多个文本块｡
‫一个是网格点列位置为零的文本块, 一个是要绑定的文本｡
‫所以我要把这条短信绑定到第一组｡
‫现在, 你可能想知道, 第一队是什么？
‫我们需要在后面的代码中定义这个team one｡
‫好吧, 我会的
‫所以我要做的是, 在我继续这个例子之前, 我将继续后面的代码,
‫我将创建一个新的类, 它将处理匹配｡
‫所以这只是一个非常简单的类, 公共类匹配｡
‫这个类只包含公共属性, 我们在这里创建一个属性.
‫就像这样, 这会更容易, 得到一个, 然后另一个, 得到两个,
‫然后我需要一个, 这将是一个字符串, 这将是两个1, 然后另一个, 这也是一个字符串,
‫这将是第二组｡
‫现在我终于有了一个整数, 也就是完整的.
‫所以我想知道比赛进行到什么程度或者总的比赛已经过去了多少分钟｡
‫这些是关于这个匹配类的一般信息｡
‫你可以看到这门课很棒, 一般来说,
‫面向对象编程在这里也会很棒, 因为如果我们想添加更多的信息, 我们可以简单地调整它｡
‫例如, 我们想添加在球场上的球员, 我们可以创建一个全新的属性来照顾球员｡
‫所以我们可以创建一个类, 在match中使用, 它包含所有不同的球员名字或者类似的东西.
‫这对于可扩展性来说非常重要, 因此您可以轻松地维护代码｡
‫现在我们有了这个match类, 在我的主窗口中, 我想继续创建一个match列表｡
‫我将创建一个列表, 并将其命名为match, 或者实际上我将使用Match作为列表元素.
‫它将被称为匹配, 这将是一个新的匹配列表｡
‫好吧, 我会的
‫现在我有了一个匹配项列表, 我可以向该列表中添加元素｡
‫所以我将增加一场新的比赛, 这将是我的球队之一, 拜仁慕尼黑的价值｡
‫我是德国拜仁的超级球迷, 也是德国最好的球队｡
‫在国际上非常好｡
‫希望他们能赢得今年的冠军联赛｡
‫看起来还不错｡
‫他们刚刚击败了塞维利亚｡
‫对于那些严厉的粉丝, 我很抱歉｡
‫然后是得分1, 我把它设为3还有得分2, 我把它设为2.
‫最后我们有一个完成度, 我把它设为85｡
‫所以比赛快结束了, 拜仁仁领先一分或者一球｡
‫这就是我创建新匹配的一般方法｡
‫你看, 我们不需要创建一个构造函数, 我们不需要在那个类中创建任何方法｡
‫我们只是创建了一个非常基本的类, 它有属性, 我们在这里分配了这些属性,
‫现在我们有了一个拥有所有这些属性的对象｡
‫这很好, 因为现在我们可以使用它来显示在我们的列表上, 或者实际上显示在我们的上｡
‫列表框中｡
‫所以我有第一个文本块, 这是主题一｡
‫然后我有了第二个文本块, 它应该与一队的得分相联系｡
‫所以这将是一分｡
‫那么下一个文本块应该是关于第二组的信息｡
‫所以这将是第二队｡
‫而关于第二队的信息只是第二队的名字, 然后最后得了两分｡
‫最后, 我想有一个进度条, 而不是一个文本块,
‫它会告诉我游戏的进度｡
‫我将在第四个网格列设置一个进度条｡
‫当然, 我们还需要更改此处的列｡
‫一, 二, 三, 四｡
‫所以我们在这里设置了五列｡
‫现在我把第一队放在第0列, 第一队的分数放在第1列, 依此类推｡
‫现在我想为进度条设置一个最小值, 它是零, 还有一个最大值｡
‫如果你了解足球, 那么你就知道90分钟或足球取决于你来自哪里, 或者你想用哪种英语,
‫英国英语还是美国英语｡
‫我们有一个值要绑定, 我们用这里的文本做了这个, 所以我们简单地绑定到文本｡
‫但是现在我们要绑定一个进度条的值, 因为进度条不仅仅是一个文本, 它实际上是好的,
‫它需要一个整型的值｡
‫我在这里要绑定的是补全补全, 现在我们应该可以测试它了｡
‫所以, 即使它在抱怨, 那也是因为我没有关闭进度条｡
‫好吧, 我会的
‫但如你所见, 这里什么都没有, 因为我们使用的值, 都在代码中｡
‫它还没有编译代码｡
‫它不会检查示例文件中主类的代码｡
‫现在让我检查一下是否可以运行它｡
‫顺便说一句, 如果我们想运行它, 有一个重要的东西要添加, 那就是实验室匹配｡
‫点项源等于我们的匹配项｡
‫现在, 什么是LWB匹配, 什么是项目来源？
‫如果我们查看所有匹配项, 这就是我们的列表框｡
‫所以我把这个列表框叫做, 我会代表列表框匹配｡
‫所以这个列表框将处理所有匹配项或者显示所有匹配项｡
‫这就是它背后的想法｡
‫好吧, 我知道了
‫它需要一个数据源, 否则它将不会显示任何数据｡
‫我说, 好吧, 我希望它成为我们匹配的数据源｡
‫而且, 匹配应该是数据源｡
‫所以现在应该显示这场比赛是拜仁慕尼黑对真实的马德里3比2的比分｡
‫然后我们是拜仁慕尼黑, 真实的马, 拜仁是三球, 皇马德里有两球｡
‫然后我们会看到进度条, 上面显示时间快到了, 所以比赛就快结束了｡
‫现在就去
‫我想让比分在两队中间, 所以我需要改变这里的顺序｡
‫我要这样改变它｡
‫当然, 我也需要调整这里的列, 因为我希望分数彼此相邻｡
‫比较起来容易些｡
‫我们再来一遍, 我们可以看到负三, 真实的马德里有两个, 他们应该会好一点,
‫文本应该居中｡
‫所以我们可以做的是让它更好地显示分数, 然后我将它对齐, 我可以用一条线来做,
‫这条线将是水平对齐的中心｡
‫我将对两个分数都这样做｡
‫我们再来一遍｡
‫正如您现在所看到的, 这就是您如何调整用户界面并应用您的更改, 使其变得更好｡
‫你甚至可以把这个数字向右对齐, 那个数字向左对齐,
‫你甚至可以在中间输入冒号之类的东西.
‫好吧, 我会的
‫这是我们的第一场比赛｡
‫现在给你一个小小的挑战｡
‫请继续并添加多个不同的匹配项｡
‫也不一定非要踢足球｡
‫你可以或者足球你可以进入比赛的任何进度条应该是,
‫像时间的东西, 是了, 你有简单的两支球队与他们的分数在每一方｡
‫所以请继续添加｡
‫好吧, 我会的
‫我希望你试过了｡
‫它应该很简单, 因为我们在这里创建了这个匹配｡
‫我们需要做的唯一一件事就是多次复制和粘贴, 现在只需调整球队名称和分数｡
‫所以我在这里准备了一些东西, 就像我说的, 我更喜欢足球, 所以我会加上足球队｡
‫国际一PSG代表巴黎圣, 这将是对巴尔萨和巴萨目前输给佩奇, 但他们仍然可以赢得它,
‫因为他们仍然有足够的时间｡
‫所以现在才55分钟｡
‫然后我们有Bvb是多特蒙德, 这是德国大部分时间第二好的球队, 他们和我们或者罗马比赛｡
‫然后我们这里有另一支球队, 那就是曼联｡
‫他们不太可能和银河队比赛, 但他们可能会互相比赛, 我会把最后一个得分去掉,
‫这样我就不必在这里打字或考虑不同的球队了｡
‫所以这场比赛并没有那么长, 或者说它还没有过去那么长｡
‫在这里, 曼联进了一个球, 伊布也为洛杉矶银河队进了一个球｡
‫这是第35分钟, 巴巴尔萨｡
‫我觉得这很好｡
‫因此, 我们可以保留它, 现在我们可以再次运行它｡
‫然后你会看到我们有这个小界面在这里显示我们所有不同的球队和他们的分数, 然后你也可以看到他们在多久｡
‫当然, 你可以添加一些东西, 比如开始时间, 结束时间, 你可以添加各种各样的信息,
‫任何你能想到的｡
‫如果你有像所有玩家一样的东西, 那就太好了｡
‫所以如果你想在这里添加队列, 你可以做的就是创建一个新的属性,
‫叫做队列, 它可能是一个长的字符串数组, 甚至是一个包含所有不同玩家名字的字符串列表.
‫然后你可以显示一旦有人按下其中一个, 并按下选择按钮｡
‫但我们还没有选择按钮, 这就是我们现在要添加的, 因为您可能会说,
‫哦, 我想在那里有一些额外的信息｡
‫这是非常相关的｡
‫如果您需要, 或者如果您在应用程序中确实需要它, 那么它确实是一个很好的工具｡
‫所以我把它放在列表框之外｡
‫顺便说一下, 我们的列表框, 我没有在这里设置任何列, 但这是WPF为我们做的事情｡
‫所以第一个元素会自动的在0, 0, 如果我们不赋值的话｡
‫但我马上就给它赋值｡
‫首先, 我将添加一个按钮｡
‫因此, 让我们创建一个新按钮｡
‫让我们将其设置在第一个网格列上, 并向其添加一个单击事件｡
‫我将创建一个新事件｡
‫我将使用new事件处理程序, 它将为我添加一个button click方法,
‫我将调用此show selected方法.
‫所以, 按钮点击, 也许这不是一个最好的名字, 但是, 是的, 没关系, 我们可以使用这个按钮点击｡
‫这里我们有这个按钮单击方法｡
‫它会显示更多的信息｡
‫现在它只做以下事情｡
‫它只会检查所选的匹配项是否不为空｡
‫所以lbe匹配所选择的项不相等､ 为空或为null｡
‫因为如果它是空的, 我就不想发生任何事情.
‫但如果它不为空,
‫我想在消息框中显示一些内容, 比如Selected Match将为加号, 在这里我将显示所有不同的匹配项.
‫是这样｡
‫我需要像ElB这样的东西来匹配所选的项目作为匹配, 我想从那里得到团队, 因为现在匹配所选的项目不是一个匹配类,
‫但我想使用它作为匹配｡
‫这里我想给第一组看一个空白区域, 再加上下一排｡
‫我把它复制到这里｡
‫我会把它放到下一行｡
‫这里我不想给大家看｡
‫我想给你看乐谱｡
‫然后在下一行, 我想显示分数2｡
‫最后, 我想给第二组看看｡
‫之后, 我就不需要空格了, 我可以用冒号, 实际上像这样, 分号｡
‫这就是我在消息框中显示内容的方法｡
‫在这个例子中, 我将再次展示我的团队｡
‫因此, 您可以看到LWB与所选项目匹配｡
‫所选项目是一个对象, 我想将其用作匹配项, 以便可以访问其team one､ team
‫two和score属性｡
‫否则我做不到｡
‫所以如果我不提这个, 我就不能给一队打电话了｡
‫我马上给你们看｡
‫比如说我有一个匹配点, 选中的项, 你可以看到它没有提供属性, 因为这是一个对象｡
‫这个选定的项目只是一个对象, 它只有那些可用的方法方法, 等于字符串等等｡
‫但我实际上需要的是匹配对象上的属性, 我知道所选的对象是一个匹配对象｡
‫所以我才能访问它的属性｡
‫好极了｡
‫现在让我们来测试一下｡
‫然后我们就可以完成这段视频了｡
‫所以我希望你能沿着我, 这一切都很好｡
‫现在我选择了巴尔萨, 或者说是Barsa秀, 正如你所看到的, 选择了PSG三对Barsa的比赛｡
‫这是目前的比分｡
‫在这里, 你当然可以继续添加更多的信息,
‫或者你甚至可以打开一个新的窗口, 在其中显示所有不同的信息, 如两支球队的比赛阵容等｡
‫好吧, 这是一个相当长的视频, 我们做了相当多的东西｡
‫我们使用了列表框｡
‫你也看到了
‫然后我们再次使用网格｡
‫我们现在已经看到了｡
‫但有趣的是, 首先, 我们创建了一个类, 它包含了我们用来创建这个小匹配列表的属性,
‫这很酷, 因为我们可以很容易地扩展它｡
‫我们还使用了数据绑定, 在这里, 我们绑定到了类中的一个属性, 而没有绑定到主窗口类,
‫即｡
‫在这里匹配, 这样我们就可以很容易地访问它, 这很酷｡
‫好的
‫所以我觉得这对这个视频很有好处｡
‫下一场见｡