2016-05-13 121 views
-3

我有一個MainViewModel類,這是我的導航的基礎。如何通過CommandParameter傳遞對象的引用

在這個類中我有這個方法,目的是改變傳遞給選定供應商的參數對象。

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; 
       } 
      } 
     } 
} 

被此方法的影響的類是如下:

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

      ........ 
    } 

我基本上試圖賣方屬性傳遞通過所述CommandParameter屬性到ShowVendorDialog其通過執行一個引用類型RelayCommand,我只是不知道如何完成參考部分。

這是綁定到ShowVendorDialogCommand的xaml。

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

由於Vendor屬性是通過值傳遞給ShowVendorDialog函數的,所以這並沒有達到我所需要的。

無論如何要通過參考供應商?

+0

您是否嘗試與上下文一起指定?像'DataConext.Vendor'? –

+1

工作正常! '命令=「{綁定}」'和演員就好了!謝謝! –

回答

-1

請問private void ShowVendorDialog(ref object parameter)不行嗎?

+1

不是我的Action在我的Command類中被定義的方式。我將不得不改變更多的東西。 –