c# - WPF:带有重置项的组合框

标签 c# .net wpf xaml combobox

我想在 WPF 中制作一个 ComboBox,其顶部有一个 null 项目,当它被选中时,SelectedItem 应该设置为 null(重置为默认状态)。我一直在寻找,但没有找到令人满意的解决方案。

如果可能的话,我希望它仅使用 XAML 代码或附加行为来执行此操作,因为我真的不喜欢更改 View 的 ViewModel 中的内容或覆盖标准控件。

这是我到目前为止的想法(缩短的代码):

[...]
<Popup x:Name="PART_Popup" [...]>
    <Border x:Name="PopupBorder" [...]>
        <ScrollViewer x:Name="DropDownScrollViewer" [...]>
            <StackPanel [...]>
                <ComboBoxItem>(None)</ComboBoxItem>
                <ItemsPresenter x:Name="ItemsPresenter"/>
            </StackPanel>
        </ScrollViewer>
    </Border>
</Popup>
[...]

OpenCombo

我认为最好的方法是以某种方式添加一个事件触发器,当项目被选中时将 SelectedIndex 设置为 -1,但我在这里卡住了。

任何想法如何做到这一点?或者更好的方法,比如附加行为?

最佳答案

考虑实现 Null Object Pattern对于“无”组合框项目,并将此项目添加到您的项目列表中。然后实现用于在该类中保存空对象的自定义逻辑,或者只检查所选项目是否为 NullItem 类型。

关于c# - WPF:带有重置项的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16009629/

相关文章:

c# - 管理 SQL Server 连接

c# - App.xaml 指向子文件夹中的库

c# - 找不到有效的帐户信息组合

c# - Xero oAuth 2 授权

c# - 从 ASP.NET CORE 2 获取当前用户

c# - 如何为 iPhone 制作聊天客户端

c# - 计时器回调关闭 WPF 应用程序(DispatcherTimer 工作..)

.NET 正则表达式替换组内的字符

c# - 使用 MVVM 模式将项目添加到数据绑定(bind)列表框的最佳方法?

wpf - SnapsToDevicePixels、UseLayoutRounding 和 BitmapScalingMode 似乎不起作用