[英]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.