0

问题:

对象引用未设置为对象的实例(第二次单击 GridView 中的项目后)。

这个对象以某种方式引用了 UoMCollection.Clear() 和这里遇到的问题:txtBlkUoM.Text = Uom.UoM.ToString();

-1-- 在页面中声明这个

  ObservableCollection UoMCollection = new ObservableCollection();


-2-- Gridview : 单击 GridView 中的一个项目,它将执行以下操作:

 PopUpItem.IsOpen = true; (这是弹出框)

 GetAllUoMForThisItem(No);


-2-- 这将填满另一个 ListBox 调用:lsBoxUoM

 私人异步无效GetAllUoMForThisItem(字符串否)
        {
            var db = new SQLiteAsyncConnection(DBPath);


       (每次在 GridView 中选择一个项目时,我都需要清除内容)
            UoMCollection.Clear();   

            var allUoM = await db.QueryAsync("Select * From ItemUoM Where ItemNo = '" + No + "'");

            foreach (var _UoM in allUoM)
            {
                字符串 strUoM = _UoM.UoM;

                AddToList(strUoM);
            }

            lsBoxUoM.ItemsSource = null;
            lsBoxUoM.ItemsSource = UoMCollection;

       }


 私人无效AddToList(字符串uom)
        {

            UoMCollection.Add(新项目UoM()
            {
                计量单位 = 计量单位
            });

        }




-3-- 在此 PopUpBox 中进行选择

 私人无效 lsBoxUoM_SelectionChanged(对象发送者,SelectionChangedEventArgs e)
        {

          if(lsBoxUoM.SelectedIndex == -1);

            var Uom = (ItemUoM)lsBoxUoM.SelectedItem;
            txtBlkUoM.Text = Uom.UoM.ToString();

        }


-4- 选择后关闭此 PopBox 并再次从 (2) 开始


4

1 回答 1

0

lsBoxUoM_SelectionChanged你测试lsBoxUoM.SelectedIndex == -1. 这应该是lsBoxUoM.SelectedIndex != -1。在txtBlkUoM.Text = Uom.UoM.ToString();您应该将 SelectedIndex 重置为 -1 之后,以便在用户再次选择同一项目时再次引发选择更改事件。

于 2013-10-22T06:03:40.620 回答