仅使用c#代码使用IValueConverter呈现UI
我是c#和silverlight-5初学者。
首先,我必须通过反序列化xml字符串来创建对象。 我已经成功完成了这项工作,但现在我的下一步是使用对象元素创建GUI。 我知道我必须使用“ IValueConverter
”才能做到这一点。 但我怎么不知道。
包含该对象的我的Program类是这样的:
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Runtime.Serialization.Json; using System.Runtime; using System.Xml.Serialization; using System.Runtime.Serialization; using System.IO; using System.Collections.Generic; using System.Diagnostics; using System.Xml; using System.Collections; namespace Model.XML { public class ProgramControl { public static void Main() { string xmlstring = @" max_amount Millions Combo Integer 4 0 5 10 20 50 "; XmlSerializer deserializer = new XmlSerializer(typeof(Parameter)); XmlReader reader = XmlReader.Create(new StringReader(xmlstring)); Parameter parameter = (Parameter)deserializer.Deserialize(reader); foreach (var item in parameter.Component.Attributes.Items) { Debug.WriteLine(item); } Debug.WriteLine(parameter.Component.Type); Debug.WriteLine(parameter.Name); Debug.WriteLine(parameter.Label); Debug.WriteLine(parameter.Unit); } } }
现在的问题是我如何从反序列化(IValueConverter)获得的对象创建GUI?
编辑:我不知道如何实现它:
首先是在包含“IValueConverter”接口的类中我们必须转换(使用Convert()函数)对象(在反序列化时获得)到参数然后传递那些参数(包含在c#中创建的combobox)通过return
到xaml codewhich包含用于呈现我们刚刚使用c#创建的GUI的容器。
在Xaml代码中,我们只需要创建容器,该容器将显示combobox以及我们在上一步中使用c#代码创建的其他标签和文本。 (我们不必在这里使用xaml创建combobox,它是在包含IValueConverter接口的类中的c#代码中创建的,它返回UI)。
例如:(很难让你理解正确,可能会出现一些语法错误):
我的“MyValueConverter.cs”类假设为:
public class MyValueConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { List list = value as List; List result = new List(); foreach(parameter p in list) { UIElement newEle = null; if (p.component.type == "Combo") { newEle = new ComboBox(); } result.add(newEle); } return result; ///////////////////////////////////////////////// //////////////// and so on :///////////////////// ///////////////////////////////////////////////// } }
而在xaml文件中,我必须创建一个容器来呈现在c#(IValueConverter接口类)中创建的UI。 所以我们必须选择任何必须能够渲染combobox的容器,标签,文本快照GUI中显示的所有数据(conatiner可能是StackPanel,因为有多个东西要显示) 。
我的xaml代码只是包含一个像这样的容器:
请帮忙实现它吗? 请不要犹豫,询问是否还不明白。
您可以使用隐式数据类型。
在您的xaml中,您可以为特定数据类型定义模板:
您最好根据type-element值创建不同的类型。 另一种解决方案是为Parameter类型创建一个大模板,并根据Parameter-type包含的内容显示相应的元素。 但我不推荐这种方法。
然后,您可以使用ItemsControl显示所有参数:
不同的参数将根据其具有的类型以不同的方式呈现。
上述就是C#学习教程:仅使用c#代码使用IValueConverter呈现UI分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1014930.html