我在这里使用了 MsDesktop Stack 示例来创建我的模式并为实体集建立视图/视图模型/存储库,其 PrimaryKey(称为 PartNumber)使用存储过程函数映射映射到 ComplexType 的许多 Attribute 属性。
我很容易订阅 RaisePropertyChangedEvent("Parts") 来填充列表框,但无法获得:
public Part SelectedPart
{
get { return p_SelectedPart; }
set
{
base.RaisePropertyChangingEvent("SelectedPart");
p_SelectedPart = value;
base.RaisePropertyChangedEvent("SelectedPart");
}
}
当我在 OnPropertyChangedEvent 中订阅它时:
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "SelectedPart":
/* When we select a Part, we need to configure the view model
* to display the selected Part's attributes. */
VMSProcServices.ReturnExtendedPartProperties(this);
break;
case "Parts":
/* When we load a Parts collection from the data store, we replace
* the existing collection in the Parts property. After we do that,
* we need to subscribe to the CollectionChanging event of the new
* collection. */
this.Parts.CollectionChanging += OnPartsCollectionChanging;
break;
}
其中 ReturnExtendedProperties() 定义为:
public static void ReturnExtendedPartProperties(MainWindowVM mainWindowVM)
{
MyEntities myEntities = new MyEntities();
mainWindow.ReturnAttsPerPn_Result = new ObservableCollection<ReturnAttsPerPn_Result>();
if (mainWindowVM.SelectedPart != null)
{
mainwWindowVm.ReturnAttsPerPn_Result.Clear();
foreach (ReturnAttsPerPn_Result attResult in myEntities.ReturnAttsPerPn(mainWindowVM.SelectedPart.PnID))
{
mainWindowVM.ReturnAttsPerPn_Result.Add(attResult);
}
}
}
调试时,我的 Locals 窗口中没有 SelectedPart 属性的数据,但 Part 对象的 ObservableCollection 在那里(这很明显,因为我可以看到这些数据)。此外,我什至从未涉足“SelectedPart”的情况,只有 OnPropertyChanged 方法上的“Part”。
我的主要问题是,(请原谅我作为初学者缺乏表达能力):我如何有效地“捕捉” SelectedPart 属性的值并将其提供给我的存储过程,并将输出用作集合?
感谢您的阅读,非常感谢您的帮助:)
编辑:: 更改标题