概述
ComboBox 在WPF中是常见的控件。
一般情况下,在绑定好数据源后,其内容是固定的。
当然,你也可以实时刷新,但这将带来较高的资源消耗。
因此有个折中的办法:
只在它在展开时,自动更新列表内容。
框架环境
当前文章基于 .Net6框架,其他框架不适用。
步骤1:安装Nuget组件:Microsoft.Xaml.Behaviors.Wpf
这个是用于平替winform某个组件的WPF版本。
Nuget直接安装即可。
步骤2: 添加XAML开头
xmlns:behaviour="http://schemas.microsoft.com/xaml/behaviors"
引用你安装的组件。
步骤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>
触发展开后,刷新列表的,就是以下代码块
<behaviour:Interaction.Triggers>
<behaviour:EventTrigger EventName="DropDownOpened">
<behaviour:InvokeCommandAction Command="{Binding GetComPortsCommand}" />
</behaviour:EventTrigger>
</behaviour:Interaction.Triggers>
它通过Command的方式,绑定并触发GetComPortsCommand 的方法。
最终实现了这个刷新的动作。文章来源:https://www.toymoban.com/news/detail-703072.html
其他
有关Command的实现,可以参考我其他的博客。文章来源地址https://www.toymoban.com/news/detail-703072.html
到了这里,关于WPF .Net6框架下, 使用 Microsoft.Xaml.Behaviors.Wpf 的Interaction.Triggers特性,实现ComboBox 在展开时,触发刷新列表内容的动作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!