首页 > 其他分享 >WPF开发中遇到的新知识 -- 7

WPF开发中遇到的新知识 -- 7

时间:2022-09-25 11:23:13浏览次数:51  
标签:绑定 -- 知识 用户 输入框 内容 WPF 下拉框 输入

搜索框

目的:希望一个类似百度搜索框的功能,在输入框中输入内容,弹出下拉框,下拉框的内容随着输入的变化而变化

方法:

  1. 输入框,用户在输入的时候,变化的是 Text 属性,我们可以先绑定一个属性在输入框的内容中,不过是单向绑定 OneWay ,这样输入框的变化就不会影响到后台,那么搜索的内容如何获取呢?继续引入微软的behaviors,然后当用户输入的时候,会不断触发输入框的TextChanged事件,利用这个事件,绑定一个命令,将用户输入的内容传递到命令里面,这样我们就可以获取到输入的内容。而上面绑定的属性,是在用户选择了下拉框的完整内容后,填充输入框的,所以需要分开
  2. Popup,弹出框,容器,
  3. ListBox,承载搜索结果,数据来源会被输入框的命令所改变,用户点击选择的子项,会改变绑定在输入框Text上的属性,导致用户点击子项后,输入框的内容会变为点击的内容
<TextBox Grid.Column="0" x:Name="LineInputBox" Text="{Binding SearchLineItem,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource lineConverter}}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="TextChanged">
            <i:InvokeCommandAction 
                Command="{Binding SearchLineCommand}"
                CommandParameter="{Binding ElementName=LineInputBox,Path=Text}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>
<Popup 
    Grid.Column="0"
    IsOpen="{Binding ElementName=LineInputBox,Path=IsKeyboardFocused,Mode=OneWay}"
    PlacementTarget="{Binding ElementName=LineInputBox}"
    Placement="Bottom"
    Width="{Binding ElementName=LineInputBox,Path=ActualWidth}"
    AllowsTransparency="True" 
    PopupAnimation="Slide">
    <ListBox 
        SelectedItem="{Binding SearchLineItem,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}"
        ItemsSource="{Binding LineSourceDto,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">

        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding Converter="{StaticResource lineToNameConverter}">
                            <Binding Path="StartPoint"/>
                            <Binding Path="EndPoint"/>
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Popup>

标签:绑定,--,知识,用户,输入框,内容,WPF,下拉框,输入
From: https://www.cnblogs.com/huangwenhao1024/p/16727487.html

相关文章

  • Python列表、元组、字典、集合区别
    一、列表 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的  2.通过偏移读取 组成列表的值叫做元素(Elements)。每一个元素被标识一个......
  • 链表之单链表
    单链表1.链表的定义通常将采用链式储存结构的线性表称为线性链表什么是链式储存结构用一组任意(可以连续,也可以不连续)的存储单元存放线性表的元素特点:逻辑次序和物......
  • WPF开发中遇到的新知识 -- 6
    DataGrid的简单使用因为我只需要一个简单的表格展示数据,而操作数据我是放在了Button中,所以我需要关闭DataGrid本身自带的一些操作数据的功能,以下都是需要关闭的RowHe......
  • 软件测试
    什么是软件测试?在规定条件下对程序进行操作,从而发现问题,对软件质量进行评估的过程。软件测试的目的以最少的人力,物力和时间找到软件中的缺陷,并修改,从而避免商业风险。......
  • WPF开发中遇到的新知识 -- 8
    Prism对话框移除最大化最小化和关闭目的:在弹出的对话框中,不需要最大化,最小化以及关闭按钮,自定义两个按钮,用作确认提交和取消提交方法:在Prism中找到的方法,直接在UserCont......
  • 第四章实例
    实例4                              ......
  • 95-2.Hive史诗级调优大全_ev
                  ......
  • 哈希表
    简介散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个......
  • 2022-2023-1 20221317《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)这个作业的要求在:2022-2023-1《计算......
  • RMAN-08137
    RMAN-08137:warning:archivedlognotdeleted,neededforstandbyorupstreamcaptureprocessarchivedlogfilename=+ARCH/MARC/ARCHIVELOG/2022_09_21/thread_2_......