0

Есть листбокс в него подгружается перечисление курсов. Я хочу что бы при выборе одного из курса менялась привязка свойства ItemsSource (с помощью свойства SelectedItem выбранный элемент запишется в свойства, он же и должен привязаться в свойство ItemsSource). Свойства SelectedCource, Courses определены в визуальной модели окна. При попытке привязаться к нужному свойству у меня идёт выбор между свойствами класса Course. Как можно решить данную проблему?

                <ListBox Grid.Row="1"
                     ItemsSource="{Binding Courses}"
                     SelectedItem="{Binding SelectedCourse}"
                     HorizontalContentAlignment="Left"
                     VirtualizingPanel.ScrollUnit="Pixel"
                     >
                <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}"
                           >
                        <Style.Triggers>
                            <Trigger Property="IsSelected"
                                     Value="True">
                                <Setter Property="ItemsControl.ItemsSource"
                                        Value="{Binding SelectedCourse}"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ListBox.ItemContainerStyle>
                <ListBox.Resources>
  • при выборе одного из курса менялась привязка свойства ItemsSource - а смысл такого? Перезапись того, что уже есть на экране, с помещением туда совершенно других данных, ну это прям очень фиговый UX, люди вам явно не скажут за такое спасибо. Не, ну если хотите, то пробуйте играться с триггерами самого ListBox, а не внутреннего объекта. А еще лучше, реализовать это на уровне VM слоя, ибо это, по сути, работа с данными, которые должны быть отображены. А так, я бы на вашем месте сделал бы примерно так. И да, не забывайте ставить метку C#! – EvgeniyZ Nov 25 '21 at 20:04
  • @EvgeniyZ Если мне нужно отображать выбранные данные в том же месте в элементе ListBox разве есть более адекватный вариант? – Bred Wud Nov 25 '21 at 21:30
  • Я вам ведь уже сказал, как сделал бы это я. А также сказал, что считаю это ужасным UX решением, это будет путать пользователя, а также он не сможет вернуться назад без дополнительных кнопок и прочего. Когда есть коллекция в коллекции, в которой есть еще коллекция - это зовется деревом, так почему н выводить это как дерево? Вон есть TreeView, стилизуете, выводите, получаете красивое меню с выводом всех данных разом, где пользователь может свернуть то, что ему не нужно, выбрать другое и т.д. Я еще понял бы если у вас был бы разный контент, ок, но тогда почему ListBox? – EvgeniyZ Nov 25 '21 at 22:26
  • @EvgeniyZ Так проще было бы добавлять новые данные. В TreeView кстати так же при попытке привязаться в стилях TreeView.ItemContainerStyle к свойству выпадают те, что принадлежат объекту. Это логично так как этот контейнер будет его содержать, но можно ли привязаться к свойству из моей модалки? – Bred Wud Nov 27 '21 at 00:47

0 Answers0