当前位置:   article > 正文

WPF .Net6框架下, 使用 Microsoft.Xaml.Behaviors.Wpf 的Interaction.Triggers特性,实现ComboBox 在展开时,触发刷新列表内容的动作

microsoft.xaml.behaviors.wpf

概述

ComboBox 在WPF中是常见的控件。
一般情况下,在绑定好数据源后,其内容是固定的。
当然,你也可以实时刷新,但这将带来较高的资源消耗。
因此有个折中的办法:
只在它在展开时,自动更新列表内容。

框架环境

当前文章基于 .Net6框架,其他框架不适用。

步骤1:安装Nuget组件:Microsoft.Xaml.Behaviors.Wpf

这个是用于平替winform某个组件的WPF版本。
Nuget直接安装即可。

步骤2: 添加XAML开头

 xmlns:behaviour="http://schemas.microsoft.com/xaml/behaviors"
  • 1

引用你安装的组件。

步骤3:编辑你 ComboBox的xaml部分

<ComboBox Margin="50,0,0,0"  Name="ComboBox_ComPorts" 
                                      materialDesign:HintAssist.Hint="{DynamicResource DicText_Overview_RefreshComportHints}" 
                                      materialDesign:HintAssist.HintOpacity=".26"
                                      
                                  ItemsSource="{Binding ComPorts}"  Height="Auto" Width="180" VerticalAlignment="Center" 
                                  SelectedItem="{Binding SelectedComPort, Mode=TwoWay}"
                                  ToolTip="{Binding SelectedComPort}">

                        <behaviour:Interaction.Triggers>
                            <behaviour:EventTrigger EventName="DropDownOpened">
                                <behaviour:InvokeCommandAction Command="{Binding GetComPortsCommand}" />
                            </behaviour:EventTrigger>
                        </behaviour:Interaction.Triggers>
                    </ComboBox>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

触发展开后,刷新列表的,就是以下代码块

						<behaviour:Interaction.Triggers>
                            <behaviour:EventTrigger EventName="DropDownOpened">
                                <behaviour:InvokeCommandAction Command="{Binding GetComPortsCommand}" />
                            </behaviour:EventTrigger>
                        </behaviour:Interaction.Triggers>
  • 1
  • 2
  • 3
  • 4
  • 5

它通过Command的方式,绑定并触发GetComPortsCommand 的方法。
最终实现了这个刷新的动作。

其他

有关Command的实现,可以参考我其他的博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/755500
推荐阅读
相关标签
  

闽ICP备14008679号