2016-03-21 13 views
0

我有一个观察集合“车辆”包含车辆,类“汽车”,“自行车”或“货车的车辆类”,每次从一个继承”,通过在列表框中选择并打开新窗口来编辑它,在observableCollection中编辑对象。 WPF C#

public ObservableCollection<Vehicle> vehicles = new ObservableCollection<Vehicle>(); 

Car car3 = new Car("Volkswagon", "Golf", "8000", "Red", "2000", "300000", "not so bad", "1.5litre", Car.BodyType.Hatchback); 
      Car car4 = new Car("Audi", "A6", "19000", "Red", "20014", "20000", "hannnnndy", "2litre", Car.BodyType.Saloon); 

      vehicles.Add(car1); 
      vehicles.Add(car2); 
      vehicles.Add(car3); 
      vehicles.Add(car4); 

      Van van1 = new Van("Ford", "transit", "25000", "white", "2008", "100000", "lovely red car", "1.4litre", Van.WheelBase.Medium, Van.VanType.Unlisted); 
      Van van2 = new Van("Citroen", "berlingo", "2000", "silver", "2006", "20100", "lovely", "1.4litre", Van.WheelBase.Long, Van.VanType.PanelVan); 

这些车辆被显示在一个列表框“lbxVehicles”

lbxVehicles.ItemsSource = vehicles; 

我需要能够选择显示在列表框中的车辆之一,当我点击编辑按钮,打开一个新窗口并编辑细节,当我点击一个按钮在新窗口中,可观察集合中的选定对象将被编辑。我试图做的是。第一窗口:

private void Button_ClickEdit(object sender, RoutedEventArgs e) 
      { 
       Vehicle selVehicle = lbxVehicles.SelectedItem as Vehicle; 
       if (selVehicle != null) 
       { 
        WindowEdit winE = new WindowEdit(); 
        winE.Owner = this; 
        winE.edit = selVehicle; 
        winE.ShowDialog(); 
       } 
      } 

然后在窗口2:

public partial class WindowEdit : Window 
    { 
     public object edit = new object(); 
     public WindowEdit() 
     { 
      InitializeComponent(); 
     } 

这正是我试过,但我敢肯定,这是错误的。任何帮助非常感谢,因为我正在努力学习尽可能多的,如果你可以解释任何可能的解决方案,将是伟大的

+0

一个问题,我注意到的是,在分配这一点:'winE.edit = selVehicle;'** **后你调用'winE.ShowDialog( );'。 'ShowDialog'阻止方法的执行。 (=模态窗口)。这意味着,当你关闭'winE'对话框时,'winE.edit'被赋值。您可能想要在打开窗口之前分配它。否则当窗口显示时,你的'winE.edit'将为NULL –

+0

谢谢你,我现在已经改变了,所以我会在这里更新代码! – Kevin

回答

1

你很近。 你需要设置的是你的第二个窗口的DataContext成为车辆的实例。这样,您可以使用Vehicle类的属性编辑所有属性。

请记类车辆需要继承INotifyPropertyChanged的这个工作,你需要用你设置在车辆属性的值NotifyPropertyChanged每次。

在MVVM模式这里的一些指导:

http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explained

+0

我必须读一点,但我认为它有正确的道路。我将标记为已接受的答案如果我得到它的工作,感谢您的帮助! – Kevin

+0

没问题。 MVVM的技巧是理解每个类如何“通知”UI已经改变。一旦你得到那个“尤里卡时刻”,其余的都是顺风顺水,但是它会带你几次尝试(至少它为我做了,嘿嘿) –

相关问题