• WPF 学习笔记(三)


    WPF 学习笔记系列是笔者在学习 WPF 并开发 路遥工具箱 时遇到的一些问题的记录和解决方案。因知识点过于琐碎,针对每个问题都单开博客显得比较小题大作,故此才形成了 WPF 学习笔记系列博文。

    WPF 应用开发中可编辑 ComboBox 的数据绑定

    设置 ComboBox 的 IsEditable 属性为 True 可以让 ComboBox 支持用户编辑。这种情况下,如果需要获取用户编辑后的数据,绑定 SelectedItem 或 SelectedValue 均无法获取正确的结果。为了解决这个问题,需要将绑定设置在 ComboBox 的 Text 属性上:

    <ComboBox IsEditable="True" x:Name="GroupComboBox" Text="{Binding GroupName}"></ComboBox>
    

    TextBlock 文字超出宽度后显示省略号

    设置 TextBlock 的 TextTrimming 属性为 CharacterEllipsis 可以在文本超长时显示省略号:

    <TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Result}"></TextBlock>
    

    自定义按钮样式后按钮很难点击到或按钮背景点击不到

    如果为按钮自定义了样式,比如在按钮上显示了 Path 或一张图片。可能会遇到按钮点击画图外区域命令不响应的问题,如果定义的 Path 过小,就会让按钮很难点到。产生这个问题的原因是没有为模板设置背景,导致命令事件没有捕获。解决方案就是在按钮模板最外层嵌套一个 Border 元素并将其背景色设置为透明。

    如果你在处理 Mouse 相关事件时遇到问题,也有可能是背景色未设置造成的。

    在 XAML 中为列表进行排序

    有时需要在前端界面中(XAML)对数据进行排序,但 MVVM 中后端 ViewMode 暴露的 ObservableCollection 不支持排序功能。在数据量较小时,可以通过先删除排序好后再添加的方式实现数据排序。在数据量较大时,这样做就会造成系统卡顿,解决方案之一就是在前端直接使用 CollectionViewSource 进行排序。

    关于 CollectionViewSource 的详情,可以参见微软的帮助文档:CollectionViewSource 类

    首先引入 scm 命名空间:

    xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
    

    创建数据源,并指定排序方式:

        <UserControl.Resources>
            <CollectionViewSource x:Key="GroupItemsSource" Source="{Binding GroupItems}">
                <CollectionViewSource.SortDescriptions>
                    <scm:SortDescription PropertyName="Value"></scm:SortDescription>
                </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
        </UserControl.Resources>
    

    以上代码设置数据源为 VM 中的 GroupItems ,并按照 Value 属性进行排序。

    欢迎来到:码农很忙
  • 相关阅读:
    得不到的都能释怀
    个人读后感
    面向对象程序设计
    关于QQ的NABCD模型
    团队成员及分工
    软件工程结对项目--实用计算器的设计和制作
    实践作业2 个人项目作业
    github地址
    github心得体会
    人,绩效和职业道德
  • 原文地址:https://www.cnblogs.com/Soar1991/p/15753278.html
Copyright © 2020-2023  润新知