Как связать значения combobox со значениями listbox в MVVM?
У меня есть combobox с 4 значениями,и для каждого значения в combobox список должен обновлять свои значения.Например,если у меня есть овощи и фрукты,то когда я выбираю фрукты в выпадающем списке, в списке должны отображаться все фрукты в меню.Как я могу это сделать с помощью MVVM?Я пытался сделать это с помощью запросов linq, но безуспешно.Может ли кто-нибудь объяснить мне, возможно ли это вообще, потому что, к сожалению, никто не сделал ничего подобного.Я нашел несколько примеров,близких к тому, что я хочу, но никакой помощи.
Я беру данные из базы данных,и у меня есть одна таблица,которая содержит 4 значения{courseID, courseName, SNTeacher и education}.
Это первый раз, когда я использую этот сайт, поэтому, пожалуйста, не судите...Спасибо!
Что я уже пробовал:
RegisterView.язык XAML.в CS
public partial class Register : Window { RegisterTeacherViewModel regTeacher; public Register() { InitializeComponent(); regTeacher = new RegisterTeacherViewModel(); this.DataContext = regTeacher; cbxCourses.ItemsSource =regTeacher.GetByEducation(); coursesList.ItemsSource = regTeacher.MergeWithCombobox(); } private void Button_Click_1(object sender, RoutedEventArgs e) { Hide(); } private void fullName_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { } private void cbxCourses_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { } private void Button_Click(object sender, RoutedEventArgs e) { regTeacher.CreateCrazy(); }
RegisterTeacherViewModel.cs: <pre lang="c#"><pre> private DelegateCommand _showCourse; public DelegateCommand showCourse { get { return _showCourse; } set { if(_showCourse!=value) { _showCourse = value; NotifyOnPropertyChange("showCourse"); } } } public RegisterTeacherViewModel() { ButtonCommand = new DelegateCommand(SaveTeacher); showCourse = new DelegateCommand(CreateCrazy); } private void CreateCrazy(object obj) { using (DatabaseStudentsEntities1 db = new DatabaseStudentsEntities1()) { try { var query = from Cours in db.Courses select new { Education = Cours.education, CourseName = Cours.courseName }; foreach (var education in query) { if (Education.Any(p => p.education == "ICT Engineering" && p.courseID < 2000)) { courseName.ToList(); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
Это мой RegisterTeacher.язык XAML:
<pre> <ComboBox HorizontalAlignment="Left" DataContextChanged="cbxCourses_DataContextChanged" x:Name="cbxCourses" SelectedItem="{Binding Education}" Margin="126,229.2,0,0" Grid.Row="1" VerticalAlignment="Top" DisplayMemberPath="education" Width="228" Grid.RowSpan="2"> <!--<StackPanel Orientation="Horizontal"> <Image Source="https://www.frostburg.edu/fsu/assets/Image/dept/educ/education_sign_resized.jpg" Height="20"></Image> <TextBlock Text="Program"></TextBlock> </StackPanel--> <!-->--> </ComboBox> <Button Content="Submit" HorizontalAlignment="Left" Margin="517,98.4,0,0" Grid.Row="2" VerticalAlignment="Top" Width="110" Height="40"/> <Button Content="Cancel" HorizontalAlignment="Left" Margin="361,98.4,0,0" Grid.Row="2" VerticalAlignment="Top" Width="111" Height="40"/> <ListBox HorizontalAlignment="Left" Name="coursesList" Height="240" Margin="418,13.2,0,0" Grid.Row="1" VerticalAlignment="Top" Width="225" Grid.RowSpan="2" ItemsSource="{Binding CourseName}" IsSynchronizedWithCurrentItem="{Binding Education, Mode=TwoWay}"/> <Button Content="Show courses:" Command="{Binding Path=showCourse}" CommandParameter="{Binding ElementName=coursesList}" Click="Button_Click" HorizontalAlignment="Left" Margin="163,61.4,0,0" Grid.Row="2" VerticalAlignment="Top" Width="137" Height="35"/>
saimanisha
видите ли, я не знаю, как именно это сделать, но я просто обсуждал с вами, что я могу сказать вам, будет ли это благотворно или нет .когда u выбирает combobox, используя привязку к переменной .допустим, модель класса
выбор переменных
использование запроса выборки данных варибальной модели(это могут быть фрукты или имена домашних животных и т.д..)
связать полученные данные в список ..
добавьте список к itemsource из элемента управления ListView
Daniel Andrei Popescu
Ладно,интересный подход.Я попробую сейчас и дам вам знать!
Daniel Andrei Popescu
Прямо сейчас я попробовал это,ничего не изменится.
это мой метод:
Cours cr = новый курс();
строка запроса = "";
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\User\\source\repos\\VIAApp2Demo\\VIAApp2Demo\\DB\\DatabaseStudents.mdf;Интегрированная безопасность=True;время ожидания подключения=30");
Коннектикут.Открыть();
если (образование.Любой(п =&ГТ; п.образование == "машиностроение" &амп ИКТ;&амп; С. идентификатор_курса &ЛТ; 2000))
{
запрос = "курсы обновления установить courseName=@courseName и столбцами courseid=@идентификатор_курса ";
SqlCommand cmd = new SqlCommand(query, conn);
Объект sqlparameter Coursename= ЦМД.Параметры.AddWithValue("@courseName", SqlDbType.NVarChar);
cmd.Parameters["@courseName"].Value = courseName;
if (Coursename==null)
{
Курсовое имя.Значение = DBNull.Ценность;
}
SqlDataReader rd = cmd.Метода executereader();
пробовать
{
в то время как(РД.читать())
{
использование (DatabaseStudentsEntities1 db = new DatabaseStudentsEntities1())
{
courseName = db.Courses.Выберите(х =>, новые Куре() { courseName = С. courseName }).Список();
}
УМК.Метод executenonquery();
}
РД.Рядом();
}поймать(исключение бывший)
{
Ящик для сообщений.Показать(напр.сообщение);
}
}
#realJSOP
Я хочу ответить на этот вопрос, но не настолько сильно, чтобы настроить тестовый проект и проработать все детали. :)
Daniel Andrei Popescu
Привет,Джон,если ты знаешь,где я могу найти пример для своей проблемы или дать мне совет, этого будет более чем достаточно.Я пытался найти что-то актуальное повсюду в интернете,и самое худшее заключается в том, что я новичок в MVVM и WPF, так что любая помощь будет оценена по достоинству!
#realJSOP
Я предоставляю некоторый код, который вы могли бы использовать в моем ответе.