【问题标题】:Is it possible to dynamically change the style/template of a control?是否可以动态更改控件的样式/模板?
【发布时间】:2010-06-09 12:00:39
【问题描述】:

我正在 Silverlight 4 中创建一个带有水印背景的 UserControl。

水印应根据 UserControl 所代表的底层“类型”而变化。

水印是使用路径创建的,我已将所有属性提取到样式中。

我想知道是否可以根据一些已知值在运行时更改路径的样式。

我正在使用 MVVM 和 Unity。也许我可以以某种方式绑定样式?或者我可以在创建视图时注入样式吗?

我可能必须使用控件模板来执行此操作,因此标题中的引用。

谢谢...

【问题讨论】:

    标签: silverlight styles controltemplate


    【解决方案1】:

    与其使用控件模板来改变水印的样式,不如使用VisualStateManager根据'类型'来改变水印的状态。

    【讨论】:

    • 我最初的想法是让所有水印都存在,并将绑定到 DataContext 的 Type 属性的 DataTrigger 与一系列 ChangePropertyAction 结合起来,根据类型切换各种水印的可见性。不幸的是,这似乎不起作用。可能是因为包含该类型的模型被传递到 ViewModel 的构造函数中,所以 OnPropertyChanged 永远不会为 Type 触发,因此 DataTrigger 也不会被触发。
    • 我的第二个想法是将水印的 Visibility 属性绑定到 Type 属性并使用转换器,传入适当的参数来识别 Visibility 属性在哪个水印上,以检查 Type 是否匹配参数,然后返回适当的可见性。我看不出这为什么不可行,但我的老板并不热衷。
    • 我最终说服我的老板选择转换器选项。
    猜你喜欢
    • 2012-03-29
    • 2017-03-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2016-06-10
    相关资源
    最近更新 更多