Установить IsDropDownOpen для нескольких списков со списком

#c# #wpf

#c# #wpf

Вопрос:

у меня есть список ViewModels . Список содержит LabelViewModel и ComboBoxViewModel и отображает их в a View . В основном, когда отображается представление, должны быть открыты оба списка со списком. Я пытался использовать IsDropDownOpen свойство. Первое окно откроется, но выпадающий список очень быстро исчезнет, и только второе окно останется открытым. Похоже, он не может решить, какой из них открыть.

Это моя ViewModel:

  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>
 

Ответ №1:

Вы не можете открыть два элемента управления со списком одновременно. Внутренний элемент управления всплывающими окнами захватывает мышь при открытии и, таким образом, автоматически закрывается при открытии другого выпадающего списка.

Комментарии:

1. Нет ли способа привязать его? я имею в виду, что эти списки со списком представляют собой 2 viewmodels