簡體   English   中英

如何通過 CommandParameter 傳遞對對象的引用

[英]How to pass a reference to an object through CommandParameter

我有一個 MainViewModel 類,它是我導航的基礎。

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

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 屬性將 Vendor 屬性作為引用類型傳遞給 ShowVendorDialog,后者通過 RelayCommand 執行,我只是不確定如何完成引用部分。

這是綁定到 ShowVendorDialogCommand 的 xaml。

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

由於 Vendor 屬性是按值傳遞給 ShowVendorDialog 函數的,因此這並不能完成我所需要的。

反正有沒有通過引用傳遞供應商?

private void ShowVendorDialog(ref object parameter)不起作用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM