阅读量:0
概述
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 的方法。
最终实现了这个刷新的动作。
其他
有关Command的实现,可以参考我其他的博客。