.net – Silverlight中的DataTemplate.DataType替代

.net – Silverlight中的DataTemplate.DataType替代,第1张

概述我有一个属性的视图模型,它是一个ObservableCollection< FieldVM>.在使用此属性的视图中,我有一个ItemsControl,如下所示: ...<ItemsControl ItemsSource="{Binding Fields}" />... FieldVM是一个抽象类,由TextFieldVM和EnumFieldVM等类实现.在运行期间,这些FieldVM实现被添加 我有一个属性的视图模型,它是一个ObservableCollection< FIEldVM>.在使用此属性的视图中,我有一个ItemsControl,如下所示:

...<ItemsControl ItemsSource="{Binding FIElds}" />...

FIEldVM是一个抽象类,由TextFIEldVM和EnumFIEldVM等类实现.在运行期间,这些FIEldVM实现被添加到FIElds属性,我希望它们在我的视图中显示与其关联的视图.

在WPF中,这样做很简单,我一直都这样做.您只需在适当的资源字典中执行此 *** 作,并且一切都按预期方式工作:

<DataTemplate DataType="{x:Type vm:TextFIEldVM}">    <v:TextFIEldVIEw /></DataTemplate><DataTemplate DataType="{x:Type vm:EnumFIEldVM}">    <v:EnumFIEldVIEw /></DataTemplate>

现在,Silverlight第一次工作,我希望我可以做同样的事情,但DataTemplate没有DataType属性.我被困了Silverlight的做法是什么?

解决方法 使用值转换器将类型绑定到每个视图的可见性:

<DataTemplate>     <GrID>        <v:EnumFIEldVIEw             Visibilty="{Binding Converter={StaticResource VIEwVisibilityConverter},ConverterParameter=Enum}" />         <v:TextFIEldVIEw             Visibilty="{Binding Converter={StaticResource VIEwVisibilityConverter},ConverterParameter=Text}" />    </GrID</DataTemplate>

在VIEwVisibilityConverter的ConvertTo中,根据类型切换可见性.

另一种查看方式是使用不同类型的值转换器从Application.Resources返回不同的数据模板.

<ListBox ItemTemplate="{Binding Converter={StaticResource ItemTemplateFactory}"/>

在ItemTemplateFactory.Convert()中:

var fIEldVM = value as FIEldVM;switch fIEldVM.FIEldType:{    case "Text":         return Application.Current.Resources["TextTemplate"] as DataTemplate;    case "Enum":         return Application.Current.Resources["EnumTemplate"] as DataTemplate;}
总结

以上是内存溢出为你收集整理的.net – Silverlight中的DataTemplate.DataType替代全部内容,希望文章能够帮你解决.net – Silverlight中的DataTemplate.DataType替代所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存