我有一个silverlight应用程序 在应用程序中,有许多用户控件,其中包含与采购订单,销售订单,转移等相关的数据网格。
这些共同点是"文件类型","文件编号"类型结构。
我正在尝试实现一个通用的priting函数,我获得Order然后将它发送回HOST erp系统以创建一个PDF供查看。
我试图避免为所有屏幕添加相同的功能,因此我创建了一个打印报告用户控件,上面有一个打印按钮。用户控件后面有一个View模型,上面有一些依赖属性。
我们的想法是,当用户从其中一个网格中选择一个订单时,我们将依赖支柱设置为网格中的选定项目。为了适应这种情况,依赖属性属于object。
当设置dependcy属性时,我可以在DP的regstration中定义的回调方法中查找obejct。 Iso e.value是销售订单,转储单,采购订单。
private static void UpdatedTheValues(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
var sender = d as NavReportPicker;
if (sender != null)
{
PrintObjModel bbb = (PrintObjModel) e.NewValue;
}
}
我可以推送这个属性,因为我可以将它传递给视图模型上的方法,但在任何时候我都不能用它做任何事情。
一位同事建议,为了使事情更清洁,或者在销售订单中添加一个界面,转移ORder,Purcashe ORder类将使我能够将对象转换为接口或其他一些共享类"通过在接口e..g
上调用方法public NewPrintObj GetNewObject()
{
PrintObj p = new PrintObj;
p.No=1;
p,type=2;
}
这似乎是一个相当不错的主意,但我无法将dependcy Property对象转换/转换为其他任何内容。
如果我施放我得到无效的施法异常,如果我安全施放,那么我得到一个空。
答案 0 :(得分:0)
我不完全确定我理解对象是如何相关的(所有订单都来自PrintObjModel
?)
我的答案是在依赖项属性更改事件中放置一个断点并查看e.NewValue
的内容。然后,这将允许您查看您拥有的内容以及是否可以转换为PrintObjModel
。
e.NewValue
中的值不是您所期望的,或者您期望的东西不是来自您的想法。