2016-07-22 4 views
0

Я до сих пор относительно новичок в C# и программировании в целом, поэтому я не уверен, что я даже буду в состоянии задавать этот вопрос правильно, но здесь. В настоящее время я занимаюсь классом для C# с использованием Visual Studio, и нам назначено назначение WPF-приложения, которое предоставил преподаватель, а затем создать файл .cs для ввода нашего кода, чтобы приложение работало правильно. Мне удалось создать консольные приложения, а также приложения WPF, которые использовали только VB, но я не совсем уверен, как сделать эти две концепции взаимозависимыми.Приложение WPF с использованием .cs

Пока мой код выглядит следующим образом:

MainWindow.xaml (инструктор) при условии:

<Window x:Class="CreateClassesObjs.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:CreateClassesObjs" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> 
<Grid> 
    <ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="66,37,0,0" VerticalAlignment="Top" Width="164" IsDropDownOpen="True"/> 
    <Button x:Name="button" Content="Select this course" HorizontalAlignment="Left" Margin="283,39,0,0" VerticalAlignment="Top" Width="166" Click="button_Click"/> 
    <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="69" Margin="66,233,0,0" VerticalAlignment="Top" Width="164"/> 
    <Label x:Name="label" Content="Please select a course " HorizontalAlignment="Left" Margin="66,7,0,0" VerticalAlignment="Top" Width="383"/> 
    <Label x:Name="label1" Content="You have selected these courses:" HorizontalAlignment="Left" Margin="66,202,0,0" VerticalAlignment="Top" Width="176"/> 

</Grid> 

MainWindow.xaml.cs (инструктор Прилагается):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace CreateClassesObjs 
{ 
/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 

    Course choice; 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     Course course1 = new Course(); 
     Course course2 = new Course(); 
     Course course3 = new Course(); 
     Course course4 = new Course(); 
     Course course5 = new Course(); 
     Course course6 = new Course(); 
     Course course7 = new Course(); 

     course1.setName("IT 145"); 
     course2.setName("IT 200"); 
     course3.setName("IT 201"); 
     course4.setName("IT 270"); 
     course5.setName("IT 315"); 
     course6.setName("IT 328"); 
     course7.setName("IT 330"); 



     this.comboBox.Items.Add(course1); 
     this.comboBox.Items.Add(course2); 
     this.comboBox.Items.Add(course3); 
     this.comboBox.Items.Add(course4); 
     this.comboBox.Items.Add(course5); 
     this.comboBox.Items.Add(course6); 
     this.comboBox.Items.Add(course7); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     choice = (Course)(this.comboBox.SelectedItem); 
     this.listBox.Items.Add(choice); 
    } 

} 
} 

И Course.cs (Код, над которым я начал работать):

#region Using directives 
using System; 
using System.Collections.Generic; 
using System.Text; 
#endregion 
namespace CreateClassesObjs 
{ 
public partial class Course :MainWindow 
{ 
    //Field 
    private string courseName; 

    //Method to set courseName to string value 
    public void setName(string newName) 
    { 
     courseName = newName; 
    } 

    //overrides string ToString 
    /*public override string ToString() 
    { 
     // this method returns the name field 
     Course course1 = new Course(); 
     Console.WriteLine(course1.courseName); 

    }*/ 
} 
} 

Я пытался скомпоновать это вместе с тем, какие учебники я мог найти, но я чувствую, что я просто запутываю его. Я не ищу полного ответа, но толчок в правильном направлении. Заранее спасибо!

+3

В чем Ваш вопрос? – SLaks

+2

Почему «курс» наследует «MainWindow»? – SLaks

+1

Надеюсь, этот курс не предназначен для того, чтобы научить любого WPF ... код инструктора только заставлял меня умирать внутри. – Guttsy

ответ

0

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

example

Если вы не видите этого, потому что вы не можете собрать, я бы предложил сделать новый .cs файл для вашего объекта курса вместо в результате чего он вклинился в ваш класс MainWindow. Там нет никакой причины для partial класс здесь.

В настоящее время WPF не знает, как отобразить курс в ComboBox. В приложении normal WPF можно было бы определить DataTemplate, чтобы сообщить ComboBox, как представить курс. Благодаря мерзости, созданной вашим инструктором, у нас нет такой роскоши. Вместо этого вам нужно вернуть что-то в свой метод ToString, чтобы успокоить его. Я позволю тебе понять, что это.

(Пожалуйста, обратите внимание:.. Это яркий пример того, как НЕ делать WPF, даже на начальном уровне не ваша вина любыми средствами)

0

Я надеюсь, что это помогает, но вот как я был в состоянии чтобы программа функционировала. Вам нужны ваши геттеры и сеттеры, и ваш новый курс распечатает что-то.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace CreateClassesObjs 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     Course choice; 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      Course course1 = new Course("IT 145"); 
      Course course2 = new Course("IT 200"); 
      Course course3 = new Course("IT 201"); 
      Course course4 = new Course("IT 270"); 
      Course course5 = new Course("IT 315"); 
      Course course6 = new Course("IT 328"); 
      Course course7 = new Course("IT 330"); 

      course1.setName("IT 145"); 
      course2.setName("IT 200"); 
      course3.setName("IT 201"); 
      course4.setName("IT 270"); 
      course5.setName("IT 315"); 
      course6.setName("IT 328"); 
      course7.setName("IT 330"); 

      this.comboBox.Items.Add(course1); 
      this.comboBox.Items.Add(course2); 
      this.comboBox.Items.Add(course3); 
      this.comboBox.Items.Add(course4); 
      this.comboBox.Items.Add(course5); 
      this.comboBox.Items.Add(course6); 
      this.comboBox.Items.Add(course7); 
     } 

     private void button_Click(object sender, RoutedEventArgs e) 
     { 
      choice = (Course)(this.comboBox.SelectedItem); 
      this.listBox.Items.Add(choice); 
     } 

     class Course 
     { 
      private string name = ""; 


      public Course(string name) 
      { 
       this.name = name; 
      } 

      public void setName(string name) 
      { 
       this.name = name; 
      } 

      public string getName() 
      { 
       return name; 
      } 

      public override string ToString() 
      { 
       return getName(); 
      } 
     } 
    } 
} 
Смежные вопросы