Итак, я хотел добавить RibbonCombobox к моей ленте в WPF. По какой-то причине, RibbonCombobox не имеет события selectedbreak. Я прочитал, что вы должны использовать RibbonGallery для события изменения выделения, поэтому я реализовал это
<RibbonComboBox Label="Equations" x:Name="EquationListComboToolbar" ItemsSource="{Binding}">
<RibbonGallery x:Name="EquationListComboboxGallery" SelectedValue="{Binding XPath=.}" />
</RibbonComboBox>
За сценой привязка выполняется следующим образом.
EquationListComboToolbar.DataContext = ViewModel.EquationNames;
this.Bind(ViewModel, vm => vm.SelectedEquation, v => v.EquationListComboboxGallery.SelectedItem).DisposeWith(cleanup);
Observable.FromEventPattern(EquationListComboboxGallery, nameof(EquationListComboboxGallery.SelectionChanged)).Subscribe(e => ViewModel.SelectEquation(EquationListComboboxGallery.SelectedItem?.ToString()));
Во время выполнения я получаю следующее ошибка
«Необработанное исключение типа« System.InvalidOperationException », возникшее в коллекции элементов WindowsBase.dll, должно быть пустым перед использованием ItemsSource.» Когда приложение initalizez. Я знаю, что это что-то про Галерею, но я не могу понять, в чем проблема и как мне этого добиться.
Как мне сказали, я уже попробовал ответ, который был предложен
<RibbonComboBox Label="Equations" x:Name="EquationListComboToolbar" ItemsSource="{Binding}">
<RibbonComboBox.ItemTemplate>
<DataTemplate>
<RibbonGallery x:Name="EquationListComboboxGallery" SelectedValue="{Binding XPath=.}" />
</DataTemplate>
</RibbonComboBox.ItemTemplate>
</RibbonComboBox>
Делая это, сделаем связывание невозможным