我是WPF和.NET编程的新手。我正在设计一个POS应用程序,其数据流如下所示:
现在我的问题是,我可以在单击“库存”按钮时从“库存”窗口加载“主页”窗口数据网格,但是当通过单击“品牌”窗口中的品牌打开库存窗口时,该品牌窗口又会通过单击“主页”上的“品牌”按钮打开window正在给出一个null异常。
我有以下查询,点击库存项目行按钮时会触发:
private void btnSelect_Click(object sender, RoutedEventArgs e)
{
Home myObject = Owner as Home;
Inventory item = (Inventory)lstInventory.SelectedItem;
myObject.BillInsert(item.Local.ToString(), "1", item.Price.ToString());
}
在第一种情况下,myObject返回有效值,但在第二种情况下返回null。
在Inventory.xaml.cs中,我为Inventory定义了一个接受参数BrandId的构造函数,如下所示:
public OpenInventory(int? attributeID, string attributeName=null) : this()
单击“清单”按钮时,将触发此方法,如下所示:
private void btnInventory_Click(object sender, RoutedEventArgs e)
{
OpenInventory opInv = new OpenInventory(null);
opInv.Owner = this;
}
单击“品牌”行按钮时,将从“品牌”窗口触发该方法,如下所示:
private void btnBrand_Click(object sender, RoutedEventArgs e)
{
Button _button = (Button)sender;
OpenInventory window = new OpenInventory(Convert.ToInt32(_button.CommandParameter.ToString()), "BrandId");
}
因此,单击主屏幕中的库存按钮和品牌屏幕中的库存行按钮时,将打开相同的库存窗口。
点击“库存”按钮后,将触发给定的按钮选择事件:
private void btnSelect_Click(object sender, RoutedEventArgs e)
{
Home myObject = Owner as Home;
Inventory item = (Inventory)lstInventory.SelectedItem;
myObject.BillInsert(item.Local.ToString(), "1", item.Price.ToString());
}
现在问题是,当直接从主屏幕点击库存按钮并单击行按钮时,所有者返回POS.Home值,但是当从品牌窗口单击它时,所有者返回Null。