在这里是我进入新公司的第一个解决的多线程问题,经历了一个礼拜的不断尝试,这里写下作和xaml结合技术的相关过程。
UserControl的xaml代码如下
其中需要每次绑定 ,关键的东西来了,ObservableCollection要封装下,否则会报crose thread ,要用dispatcher去begininvoke分发下这样在集合发生变化时UI的显示也会同时进行,我们这里用了现成的微软sample去做的
这边要注意我弹出tabitem 用了很多尝试,曾经用了threadpool 之后发觉在定义多个参数是stackflowexception,所以我用backgroundworker来实现thread功能,但是如何在关闭tabitem就不进行tabitem插入操作呢,我曾经用过manuReset对象,但是结果是一旦stop后set是所有backgroundworker 对象,故我还是用到tag,每个tabitem都有tag用tag存放backgroundworker对象,然后在销毁是自动转换成对应对象就ok了。
下面是建立tabitem对象
然后在打叉后就会执行
前面两句就为了实现关闭的,当然也别忘了实现
这个是在字段实现动态更新的关键,虽然有objectcollection但是对单个字段如果要属性变化还是要的。