学无先后达者为师!
不忘初心,砥砺前行。

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 属性进行排序。

赞(0) 打赏
未经允许不得转载:码农很忙 » WPF 学习笔记(三)

评论 2

  1. 大佬网站不错。

    Soar、毅3年前 (2022-01-04)
  2. #1

    老哥,研究.net?加友链么?

    kdyonly3年前 (2022-01-03)

给作者买杯咖啡

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册