首页 > 解决方案 > 为多个组合框设置 IsDropDownOpen

问题描述

我有一个列表ViewModels。List 包含 aLabelViewModelComboBoxViewModel在 a 中显示它们View。基本上,当视图显示时,两个组合框都应该打开。我试图使用该IsDropDownOpen属性。第一个盒子会打开,但下拉菜单消失得很快,只有第二个盒子保持打开状态。似乎他无法决定打开哪一个。

那是我的视图模型:

 public class WortAuswahlCollectionViewModel : ViewModelBase
{
    public EventHandler<SelectionChangedEventArgs> AuswahlChanged;
    public WortAuswahlCollectionViewModel(List<UniqueString> wortAuswahl)
    {
        if (wortAuswahl != null)
        {
            WortAuswahlCollection = new ObservableCollection<UniqueString>(wortAuswahl);

            if (WortAuswahlCollection[0].Value.Length > WortAuswahlCollection[1].Value.Length)
            {
                ComboBoxSize = WortAuswahlCollection[0].Value.Length * 28;

                MaxComboBoxSize = ComboBoxSize * 10;
            }
            else
            {
                ComboBoxSize = WortAuswahlCollection[1].Value.Length * 28;

                MaxComboBoxSize = ComboBoxSize * 10;
            }
        }
    }

    private ObservableCollection<UniqueString> m_wortAuswahlCollection;
    public ObservableCollection<UniqueString> WortAuswahlCollection
    {
        get
        {
            return m_wortAuswahlCollection;
        }
        set
        {
            if (m_wortAuswahlCollection != value)
            {
                m_wortAuswahlCollection = value;
                OnPropertyChanged();
            }
        }
    }

    private int m_comboBoxSize;
    public int ComboBoxSize
    {
        get
        {
            return m_comboBoxSize;
        }
        set
        {
            if (m_comboBoxSize != value)
            {
                m_comboBoxSize = value;
                OnPropertyChanged();
            }
        }
    }

    private int m_maxComboBoxSize;
    public int MaxComboBoxSize
    {
        get
        {
            return m_maxComboBoxSize;
        }
        set
        {
            if (m_maxComboBoxSize != value)
            {
                m_maxComboBoxSize = value;
                OnPropertyChanged();
            }
        }
    }
}

}

XAML:

<Grid>
    <ComboBox ItemsSource="{Binding WortAuswahlCollection}" Style="{StaticResource MaterialDesignFilledComboBox}" MinWidth="{Binding ComboBoxSize}" MaxWidth="{Binding MaxComboBoxSize}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path= Value}"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</Grid>

标签: c#wpf

解决方案


您不能同时打开两个 ComboBox 控件。内部 Popup 控件在打开时捕获鼠标,因此当另一个 ComboBox 打开时会自动关闭。


推荐阅读