我是c#silvelight5初学者,在我必须创建自己的Converter()函数的情况下,它必须类似Converter()
从IValueConverter
接口派生的函数。
我现在有什么数据? 我已正确反序列化xml并在反序列化时得到了这个:
XmlSerializer deserializer = new XmlSerializer(typeof(Parameter));//this Parameter is class obtained from(Root node of xml) and "parameter" is object.
XmlReader reader = XmlReader.Create(new StringReader(xmlstring));
Parameter parameter = (Parameter)deserializer.Deserialize(reader);
foreach (var item in parameter.Component.Attributes.Items)
{
Debug.WriteLine(item);//It works correctly i have debugged
}
正如您所看到的,我有对象parameter
,它现在包含xml元素和根(我的意思是所有数据)。
现在使用这个对象我试图像这样创建转换器(他的代码也在同一个类中):
ICollection<Parameter> list = parameter as ICollection<Parameter>;// **Problem creating line**
List<UIElement> result = new List<UIElement>();
你可以看到这个"parameter"
是从反序列化中获得的,我确信它在调试时正确反序列化了。
所以我在这里将"value"
转换器()替换为"parameter"
。
问题是当我调试并看到参数包含所有反序列化的xml但我不知道为什么&#34; list&#34;总是显示null?即使我可以在调试时看到所有xml元素(我的意思是节点值),但为什么&#34;参数&#34;未分配到&#34; list&#34; ? (我猜它显示为null,因为此参数属于参数类型。但是如何在当前上下文中使用它?)
有人可以纠正我并写信给我等效的Converter(),其中我们已经从反序列化xml获得了对象吗?会是一个很大的帮助。
答案 0 :(得分:0)
我终于找到了解决方案,实际上没有必要这样做:
ICollection<Parameter> list = parameter as ICollection<Parameter>;// **Problem creating line**
List<UIElement> result = new List<UIElement>();
我们可以直接使用从
获得的参数对象Parameter parameter = (Parameter)deserializer.Deserialize(reader);
并将if()条件放入访问所需的xml元素/ Class值(或者你可以说是节点),不需要创建列表。