基于对象属性值的Silverlight更改样式(即DataTrigger)

基于对象属性值的Silverlight更改样式(即DataTrigger),第1张

概述有没有人有一个成功的解决方法,根据底层数据对象属性更改silverlight中的样式,因为值的改变也是如此.我简单地使用 WPF,它显然有DataTrigger似乎涵盖了这一点,但它在Silverlight中缺少. 我找到了这个: http://blois.us/blog/2009/04/datatrigger-bindings-on-non.html 但它似乎不适用于造型.. 谢谢你的时间 S 有没有人有一个成功的解决方法,根据底层数据对象的属性更改silverlight中的样式,因为值的改变也是如此.我简单地使用 WPF,它显然有DataTrigger似乎涵盖了这一点,但它在Silverlight中缺少.

我找到了这个:
http://blois.us/blog/2009/04/datatrigger-bindings-on-non.html

但它似乎不适用于造型..

谢谢你的时间

解决方法 Silverlight不包含 DataTemplateSelector,用于基于数据绑定元素和数据对象来选择数据模板.但是,建立自己的并不难.

从继承自System.Windows.Controls.ContentControl的类开始.此类具有数据模板的属性和内容的属性,您可以使用该属性绑定到.创建一个这样的OnContentChanged方法的覆盖

protected overrIDe voID OnContentChanged(object oldContent,object newContent) {}

我更喜欢将模板放在单独的字典中,以防万一我需要在项目之间共享它们.
在这种方法中,将该控件的模板设置为从字典中选取的模板.就像是:

Switch(DataStatus){  case 0: ContentTemplate = LoadFromDictionary(                                "DataTemplateDemo;component/DataTemplates.xaml","Status0Template");          break;  case 1: ContentTemplate = LoadFromDictionary(                                "DataTemplateDemo;component/DataTemplates.xaml","Status1Template");          break;   //etc      }

在这种情况下,应该是具有几个数据模板的字典名称DataTemplates.xaml.

在您的xaml文件中,使用模板选择器类作为列表的模板:

<ListBox x:name="AnInterrestingList">    <ListBox.ItemTemplate>    <DataTemplate>        <DataTemplateDemo:DateTemplateSelector Content="{Binding}"/>    </DataTemplate>    </ListBox.ItemTemplate></ListBox>

我使用下面的帮助方法从字典中检索模板:

public static DataTemplate LoadFromDictionary(string dictionary,string template){    var doc = Xdocument.Load(dictionary);    var dict = (ResourceDictionary)XamlReader                     .Load(doc.ToString(SaveOptions.None));    return dict[template] as DataTemplate;}

更新

在此期间,我写了一个关于这个主题的示例代码的博客.可在my blog.

总结

以上是内存溢出为你收集整理的基于对象属性值的Silverlight更改样式(即DataTrigger)全部内容,希望文章能够帮你解决基于对象属性值的Silverlight更改样式(即DataTrigger)所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1003530.html

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

发表评论

登录后才能评论

评论列表(0条)

保存