如何创建用户定义的converter()等效函数替换转换器(在IValueConverter中定义)

时间:2014-05-14 07:37:23

标签: c# .net converter xml-deserialization ivalueconverter

我是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获得了对象吗?会是一个很大的帮助。

1 个答案:

答案 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值(或者你可以说是节点),不需要创建列表。