0

我在这里使用了 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 属性的值并将其提供给我的存储过程,并将输出用作集合?

感谢您的阅读,非常感谢您的帮助:)

编辑:: 更改标题

4

1 回答 1

0

尴尬地发现我的错误,只是绑定路径中的语法错误,我没有抓到(也没有贴出来。有兴趣的朋友,这是一个更简洁的存储过程结果获取方法版本,可能有点用给某人:

 public static void ReturnExtendedPartProperties(MainWindowVM mainWindowVM)
  {
       mainWindow.ReturnAttsPerPn_Result = new ObservableCollection<ReturnAttsPerPn_Result>();
       using (var myEntities = new MyEntities())
       {
             var results = myEntities.ReturnAttsPerPn(mainWindowVM.SelectedPart.PnID)
             if (mainWindowVM.SelectedPart != null)
             {
                  mainWindowVM.ReturnAttsPerPn_Result.Clear();
                  foreach (ReturnAttsPerPn_Result attresult in results)
                  {
                        mainWindowVM.ReturnAttsPerPn_Result.Add(attresult);
                  }
              } 
       }
 }
于 2012-09-14T19:55:28.813 回答