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

Почему я не могу видеть элементы списка, когда хочу их проверить?


Привет

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

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

Это моя виртуальная машина:
  public class RegisterTeacherViewModel : ViewModelBase, INotifyPropertyChanged
    {
private List<Cours> courseName;
        public List<Cours> CourseName
        {
            get { return courseName; }
            set
            {
                if (courseName != value)
                    courseName = value;
                NotifyOnPropertyChange("CourseName");
            }
        }

      
        private String education;
        public String Education
        {
            get { return education; }
            set
            {
                if (education != value)
                {
                    education = value;
                    NotifyOnPropertyChange("Education");
                }
            }
        }

        private bool Ischecked;
        public bool Checked
        {
            get
            {
                return Ischecked ;
            }
            set
            {
                Ischecked = value;
                NotifyOnPropertyChange("IsChecked");
            }
        }
        
        public IEnumerable<Cours> GetByEducation()
        {

            using (var context = new DatabaseStudentsEntities1())
            {
                var query = (from data in context.Courses select new { Education = data.education }).ToList().Select(c => new Cours { education = c.Education }).ToList();

                return query.ToList();
               
            }
           
        }


  public List<Cours> CreateCrazy()
        {
            using (DatabaseStudentsEntities1 db = new DatabaseStudentsEntities1())
            {
                try
                {
                    var query = (from data in db.Courses where data.education == "ICT Engineering" select new { CourseName = data.courseName }).ToList().Select(c => new Cours { courseName = c.CourseName }).ToList();
                    return query.ToList();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            return null;
        }


  public void SaveTeacher(object param)
    {
        SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\User\source\repos\VIAApp2Demo\VIAApp2Demo\DB\DatabaseStudents.mdf;Integrated Security=True;Connect Timeout=30");
        try
        {
            if (conn.State == System.Data.ConnectionState.Closed)
                conn.Open();
            String query = "INSERT INTO RegisterTeacher (SNTeacher,UserName,pwd,fullName,CourseName,education) VALUES(@SNTeacher,@UserName,@pwd,@fullName,@CourseName,@education)";
            SqlCommand cmd = new SqlCommand(query, conn);
            cmd.CommandType =CommandType.Text;
            cmd.Parameters.AddWithValue("@UserName", UserName);
            cmd.Parameters.AddWithValue("@SNTeacher", SNTeacher);
            cmd.Parameters.AddWithValue("@pwd", pwd);
            cmd.Parameters.AddWithValue("@fullName", fullName);
                foreach(var item in CourseName)
                {
                    if(item.Checked)
                    {
                  SqlParameter cours = cmd.Parameters.AddWithValue("@courseName", SqlDbType.NVarChar);
                        cmd.Parameters["@courseName"].Value = courseName;
                        if(cours.Value==null)
                        {
                            cours.Value = DBNull.Value;
                        }
                    }
                }
           
            cmd.Parameters.AddWithValue("@education", education);

            cmd.ExecuteNonQuery();
            MessageBox.Show("Registration succesful!");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            conn.Close();
        }

    }

Это и есть View.xaml.cs:

 public partial class Login :Window
    {
       private LoginViewModel lg;
        public Login()
        {
            InitializeComponent();
            lg = new LoginViewModel();
            this.DataContext = lg;
        }

      
       
       

        private void Hyperlink_Click(object sender, RoutedEventArgs e)
        {
            Register reg = new Register();
            reg.Show();
            this.Close();
        }
    }
}


Это и есть представление.xaml:

<ListBox HorizontalAlignment="Left" Name="coursesList"  SelectedItem="{Binding CourseName}" Height="240"   Margin="418,13.2,0,0" Grid.Row="1" VerticalAlignment="Top" Width="225" Grid.RowSpan="2"  ItemsSource="{Binding CourseName, Mode=TwoWay}" >
           <ListBox.ItemTemplate>
               <DataTemplate>
                   <CheckBox x:Name="CheckBoxCourses" IsChecked="{Binding Checked,Mode=TwoWay}" ClickMode="Press" Content="" Margin="0"/>


               </DataTemplate>
           </ListBox.ItemTemplate>
       </ListBox>
       <Button Content="Show courses:" Name="ShowCourse" Command="{Binding Path=showCourse}" CommandParameter="{Binding ElementName=cbxCourses,Path=SelectedValue}" Click="Button_Click" HorizontalAlignment="Left" Margin="163,61.4,0,0" Grid.Row="2" VerticalAlignment="Top" Width="137" Height="35"/>

1 Ответов

Рейтинг:
1

Daniel Andrei Popescu

Я нашел проблему:is in View.xaml.Это правильное решение:

<ListBox HorizontalAlignment="Left" Name="coursesList"  SelectedItem="{Binding CourseName}" Height="240"   Margin="418,13.2,0,0" Grid.Row="1" VerticalAlignment="Top" Width="225" Grid.RowSpan="2"  ItemsSource="{Binding CourseName, Mode=TwoWay}" >
          <ListBox.ItemTemplate>
              <DataTemplate>
                  <CheckBox x:Name="CheckBoxCourses" IsChecked="{Binding Checked,Mode=TwoWay}"  ClickMode="Press" Content="{Binding Path=courseName}" Margin="0"/>


              </DataTemplate>
          </ListBox.ItemTemplate>
      </ListBox>


Richard Deeming

Вопрос: опубликовано 8 часов 10 минут назад
Ответ: опубликовано 8 часов 5 минут назад
Вывод: вы уже знали ответ, когда отправляли вопрос.

Daniel Andrei Popescu

Нет,я этого не сделал, потому что не трачу время на то, чтобы остаться и сформулировать полное описание своей проблемы, если мне действительно не нужна помощь...С наилучшими пожеланиями!