【问题标题】:Allow ComboBox items to be viewed but not selected [duplicate]允许查看但未选择 ComboBox 项目[重复]
【发布时间】:2019-08-16 13:50:58
【问题描述】:

我在后面的代码中选择了一个ComboBox的显示项。

我希望用户查看可以通过后面的代码选择的项目列表,但不能通过从 GUI 上显示的列表中选择另一个项目来更改预选项目。

是否有 ComboBox 的 WPF/XAML 设置允许用户查看 ComboBox 的可选项目列表但不能从列表中选择项目?

我尝试过 IsReadOnly="True" IsEditable="False" 和 IsEnabled="False",但它们没有给我想要的。

【问题讨论】:

  • 谢谢马库斯。我在发布我的问题之前查看了它,但我看不到我的问题的解决方案。
  • 每当用户从可选项目的组合框列表中选择一个新项目时,我使用 ComboBox SelectionChanged 事件重新计算后面代码中的 SelectedValue,从而解决了这个问题。

标签: c# xaml


【解决方案1】:

试试这个 在 xaml 中,添加三个事件处理程序

<ComboBox x:Name="ComboBox" ItemsSource="{Binding ListCollection}" 
          PreviewKeyDown="UIElement_OnPreviewKeyDown" 
          PreviewMouseLeftButtonDown="ComboBox_OnPreviewMouseLeftButtonDown" 
          PreviewMouseLeftButtonUp="ComboBox_OnPreviewMouseLeftButtonUp"/>

代码隐藏

private void UIElement_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
        e.Handled = true;
    base.OnPreviewKeyDown(e);
}

private void ComboBox_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (ComboBox.IsDropDownOpen)
    {
        e.Handled = true;
        ComboBox.IsDropDownOpen = false;
    }
    base.OnPreviewMouseLeftButtonDown(e);
}

private void ComboBox_OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (ComboBox.IsDropDownOpen)
    {
        e.Handled = true;
    }
    base.OnPreviewMouseLeftButtonUp(e);
}

【讨论】:

  • 谢谢斯维特兰娜。我可以不使用 ComboBox SelectionChanged 事件。
猜你喜欢
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2013-08-31
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多