Daniel Andrei Popescu Ответов: 1

Почему приложение ломается неправильно?


Здравствуйте,у меня есть приложение WPF, и я хочу знать, в чем проблема с моей привязкой.У меня есть combobox,который содержит некоторые значения,и когда я помещаю точку останова туда,где находится функция для combobox,после того как я помещаю точку останова и хочу отладить,я не буду вводить приложение, вместо этого, когда я собираюсь войти в приложение, оно ломается.Это ненормально,так как он должен сломаться, когда я выбираю значение в выпадающем списке, поэтому он должен войти в приложение, и я должен иметь возможность видеть все функциональные возможности окна.В чем может быть проблема, которая вызывает это?
Это мой метод для combobox:
public IEnumerable<AvailableCours> GetByEducation()
       {

           using (var context = new AttendanceStudentsEntities())
           {
               var query = (from data in context.AvailableCourses select new { Education = data.education }).ToList().Select(c => new AvailableCours { education = c.Education }).ToList();

               return query.ToList();

           }

       }


Это привязка в представлении:
<ComboBox HorizontalAlignment="Left" Margin="166,229,0,0" Grid.Row="2" DisplayMemberPath="education" VerticalAlignment="Top" Name="cbxCourses" ItemsSource="{Binding Education}" SelectedItem="{Binding Path=Education}" IsSynchronizedWithCurrentItem="True" Width="264" Grid.RowSpan="2"/>


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

System.Windows.Data Information: 41 : BindingExpression path error: 'education' property not found for 'object' because data item is null.  This could happen because the data provider has not produced any data yet. BindingExpression:Path=education; DataItem=null; target element is 'ComboBox' (Name='cbxCourses'); target property is 'NoTarget' (type 'Object')

System.Windows.Data Information: 20 : BindingExpression cannot retrieve value due to missing information. BindingExpression:Path=education; DataItem=null; target element is 'ComboBox' (Name='cbxCourses'); target property is 'NoTarget' (type 'Object')

System.Windows.Data Information: 21 : BindingExpression cannot retrieve value from null data item. This could happen when binding is detached or when binding to a Nullable type that has no value. BindingExpression:Path=education; DataItem=null; target element is 'ComboBox' (Name='cbxCourses'); target property is 'NoTarget' (type 'Object')

System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=education; DataItem=null; target element is 'ComboBox' (Name='cbxCourses'); target property is 'NoTarget' (type 'Object')


Что я уже пробовал:

Я попытался сделать представление снова,я переделал БД,я изменил метод GetEducation() так,чтобы список курсов добавлял значение элементов(курсов), все еще не работал.Я был бы очень признателен за совет.

Afzaal Ahmad Zeeshan

Просто проверьте это, так как вы переименовываете свойство в своем типе anon, select new { Education = data.education }), проверьте образование в качестве имени привязки.

1 Ответов

Рейтинг:
2

Dirk Bahle

Код, который вы показываете выше, возвращает IEnumerable, но он не обновляет свойство Education. Может быть, это твоя проблема?

Можете ли вы опубликовать полный код для представления и viemodel в отношении combobox?
Вы также должны изменить свой пример кода таким образом, чтобы он считывал свои данные из массива строк, а не из базы данных, чтобы убедиться, что пример кода может быть проверен. Затем, когда мы выясним, что не так с привязкой, вы всегда можете посмотреть на вставку материала базы данных под ним ...