【问题标题】:Disable the drop down menu of a WPF ComboBox禁用 WPF 组合框的下拉菜单
【发布时间】:2013-10-29 16:24:23
【问题描述】:

我有一个如下指定的组合框:

<ComboBox Height="31" Margin="7,7,0,0" Name="callerID" IsEditable="True"  Background="LightBlue" KeyDown="callerIDbar_KeyDown" Foreground="White" FontSize="17"  FontWeight="Bold" HorizontalContentAlignment="Center" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0"  />

storedCalls 是一组电话号码,将填充到ComboBox.Items

foreach (string call in storedCalls)
{
   if (call != "Enter a number to dial")
      callerID.Items.Add(call);
}

这一切都很好。我填充了Items 主要,因为我喜欢由ComboBoxItems 集合中的值驱动的自动完成。 XAML 有没有办法禁用下拉错误并禁用下拉菜单? IE。制作一个简单的自动完成文本框,如控件?

我已经看到完整的 TextBox 控件包含一堆代码隐藏和复杂的标记,这不是我想要做的。我只需要禁用下拉菜单的显示功能。

【问题讨论】:

  • 我相信您必须更改模板。从我所见,它有点巨大......
  • 您正在寻找AutoCompleteTextBox。您可以在WPF Toolkit 中找到一个。顺便说一句,不要在 WPF 的程序代码中操作 UI 元素。为此创建一个合适的 ViewModel。
  • @Tico 您能否详细说明更改模板及其可能带来的影响?我不是专门的全职 WPF 开发人员。
  • @HighCore,是的,我担心我可能不得不包含另一个资源或使用已经烘焙的控件。问 SO 是我走这条路之前的最后一次努力。谢谢推荐。
  • @kmarks2 如果您右键单击您的ComboBox -&gt; Edit Template -&gt; Edit a Copy... 您将看到控件是如何设计的。但是既然你已经说过你不是一个全职的 WPF 开发人员,那现在可能非常困难! HighCore 建议可能是您的答案!

标签: c# .net wpf xaml combobox


【解决方案1】:

您可以处理DropDownOpened 事件,然后将其关闭。
所以在你得到的 XAML 中:

<ComboBox x:Name="cb" DropDownOpened="cb_DropDownOpened"/>

在后面的代码中:

private void cbCategoria_DropDownOpened(object sender, EventArgs e)
    {
        ComboBox cb = sender as ComboBox;
        cb.IsDropDownOpen = false;
    }

我更喜欢这个解决方案而不是将MaxDropDownHeight 设置为 0。 您的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2012-12-08
    • 2018-02-09
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多