赞
踩
ComboBox 在WPF中是常见的控件。
一般情况下,在绑定好数据源后,其内容是固定的。
当然,你也可以实时刷新,但这将带来较高的资源消耗。
因此有个折中的办法:
只在它在展开时,自动更新列表内容。
当前文章基于 .Net6框架,其他框架不适用。
这个是用于平替winform某个组件的WPF版本。
Nuget直接安装即可。
xmlns:behaviour="http://schemas.microsoft.com/xaml/behaviors"
引用你安装的组件。
<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的实现,可以参考我其他的博客。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。