2016-05-13 17 views
-3

Ich habe eine MainViewModel-Klasse, die die Grundlage für meine Navigation ist.Wie gebe ich einen Verweis auf ein Objekt über CommandParameter

Innerhalb dieser Klasse habe ich diese Methode mit dem Zweck, das Parameterobjekt zu ändern, das an den ausgewählten Anbieter übergeben wird.

class MainViewModel 
{ 
     public Command ShowVendorDialogCommand 
     { 
      get; 
      private set; 
     } 
     private void ShowVendorDialog(object parameter) 
     { 
      if (parameter != null) 
      { 
       VendorDialog vd = new VendorDialog(); 
       VendorDialogViewModel vm = new VendorDialogViewModel(); 
       vd.DataContext = vm; 
       vm.PropertyChanged += (s, e) => 
       { 
        if (e.PropertyName == "CloseDialog") 
        { 
         vd.Close(); 
        } 
       }; 
       vd.ShowDialog(); 

       if (vm.DialogResult) 
       { 
        parameter = vm.SelectedVendor.Copy() as Vendor; 
       } 
      } 
     } 
} 

Die Klasse, die nach diesem Verfahren betroffen ist, ist unten:

class InventoryStyleSingleViewModel 
    { 
      public Vendor 
      { 
       get 
       { 
         return _Vendor; 
       } 
       set 
       { 
         if (value != null) 
         { 
          _Vendor = value; 
          OnPropertyChanged("Vendor"); 
         } 
       } 
      } 
      private Vendor _Vendor; 

      ........ 
    } 

ich im Wesentlichen versuchen die Vendor-Eigenschaft als Referenztyp durch die Commandparameter-Eigenschaft auf den ShowVendorDialog, die durch eine ausgeführt wird passieren RelayCommand, ich bin mir nicht sicher, wie ich den Referenzteil bewerkstelligen soll.

Hier ist die XAML, die an den ShowVendorDialogCommand bindet.

<Button Width="50" DockPanel.Dock="Left" Command="{Binding ElementName=BeginWindow, Path=DataContext.ShowVendorDialogCommand}" CommandParameter="{Binding Vendor}" Content="..." /> 

Dies erreicht nicht das, was ich brauche, wie der Verkäufer Eigentum von Wert in die ShowVendorDialog Funktion übergeben wird.

Gibt es trotzdem den Vendor als Referenz zu übergeben?

+0

Haben Sie versucht, zusammen mit Kontext anzugeben? wie 'DataConext.Vendor'? –

+1

Das hat funktioniert! 'Command =" {Binding} "' und ein Cast ist in Ordnung! Vielen Dank! –

Antwort

-1

Funktioniert das nicht private void ShowVendorDialog(ref object parameter) funktioniert nicht?

+1

Nicht für wie meine Aktion in meiner Command-Klasse definiert ist. Ich müsste noch ein paar Dinge ändern. –

Verwandte Themen