这个是第一个类,其中蓝色部分就是我要不断改变的变量,其中的 name 、sex、age、ID 是我改变的,每次这些变量的值可以改变,但是并没有把值赋给等号的左边
public class GlobalData { static GlobalData() { m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "1", Spec = "白细胞数", Number = "WBC", Unit = "6.5", UnitPrice = "10/L", Description = "4.0-10.0", Other = "" }); m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "2", Spec = "淋巴细胞%", Number = "LY%", Unit = "67.8", UnitPrice = "%", Description = "20.0-40.0", Other = " " }); m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "3", Spec = "单核细胞%", Number = "MO%", Unit = "6.4", UnitPrice = "%", Description = "2.0-9.0", Other = " " }); m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "4", Spec = "中性粒细胞", Number = "NE#", Unit = "4.4", UnitPrice = "%", Description = "1.4-7.7", Other = " " }); m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "5", Spec = "红细胞", Number = "RBC", Unit = "4.78", UnitPrice = "%", Description = "3.50-5.50", Other = " " }); m_orderExample.m_orderDetails.Add(new OrderDetail { Sku = "6", Spec = "血红蛋白", Number = "HGB", Unit = "149.0", UnitPrice = "%", Description = "120-160", Other = " " }); } public static OderData m_orderExample = new OderData { OrderNo = PublicData.name, CustomerName = PublicData.sex, ShipAddress = PublicData.age, Express = "门诊", Freight = PublicData.ID, }; }
这是第二个类
public class OderData { public string OrderNo { get; set; } public string CustomerName { get; set; } public string ShipAddress { get; set; } public string Express { get; set; } public string Freight { get; set; } public List<OrderDetail> OrderDetails { get { return m_orderDetails; } } public List<OrderDetail> m_orderDetails = new List<OrderDetail>(); } public class OrderDetail { public string Sku { get; set; } public string Spec { get; set; } public string Number { get; set; } public string Unit { get; set; } public string UnitPrice { get; set; } public string Description { get; set; } public string Other { get; set; } }
下面这个是函数的调用,其中蓝色的就是我不理解的地方,第一次执行这个函数时,这个对象里面的变量的值可以赋值,之后就不能改变了,这是什么原因?
FlowDocument doc = PrintPreviewWindow.LoadDocumentAndRender("OrderDocument.xaml", GlobalData.m_orderExample, new OrderDocumentRender());
这个是上面这个函数的定义:
1 public static FlowDocument LoadDocumentAndRender(string strTmplName, Object data, IDoucumentRender renderer = null) 2 { 3 FlowDocument doc = (FlowDocument)Application.LoadComponent(new Uri(strTmplName, UriKind.RelativeOrAbsolute)); 4 doc.PagePadding = new Thickness(50); 5 doc.DataContext = data; 6 if (renderer != null) 7 { 8 renderer.Render(doc, data); 9 } 10 return doc; 11 }
为什么你要使用静态变量
我尝试了改了一下 但是用在好多别的地方了 不是静态的话 不能直接引用啊
原来只是需要这么引用变量 就可以了
GlobalData.m_orderExample.CustomerName="老王";
代码写的太非主流啊,你使用了静态私有构造函数,这里是不是涉及单例模式呢?
不好理解,我有点搞不懂你的代码,是大哥太厉害,还是我太菜。
唉……
不 这代码不是我写的,是一个三年前的代码了,我只是个代码的搬运工,刚接触的我也是不懂,只是用到了这个功能,如果您有兴趣,这个是原版的代码 http://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html
可以一起研究一下! ^_^
下面这个是函数的调用,其中蓝色的就是我不理解的地方,
第一次执行这个函数时,这个对象里面的变量的值可以赋值,之后就不能改变了,这是什么原因?
你怎么判断,之后就不能改变了?
问题解决了已经, 是我用的方法不对 ,我之前是设置断点看的值是否改变