Mar*_*ark 5 silverlight themes silverlight-4.0
尝试将我们的大型项目升级到SL4时出错.我没有写原始主题,我的主题知识不是很好.在我的演示应用程序我有一个标签和一个LabelHeader(我已经创建并从标签只是一个派生类与DefaultStyleKey = typeof运算(LabelHeader);
我的造型像这样LabelHeader:
<Style TargetType="themeControls:LabelHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<DataInput:Label
FontSize="{TemplateBinding FontSize}"
FontFamily="{TemplateBinding FontFamily}"
Foreground="{TemplateBinding Foreground}"
Content="{TemplateBinding Content}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Foreground" Value="Red"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
这适用于SL3但在SL4中我得到:
错误:Silverlight应用程序代码中的未处理错误:2500
类别:ParserError
消息:在"System.Windows.Controls.Control"类型中找不到属性"Content".
文件:
行:9
位置:168
如果我改变了:CONTENT ="{TemplateBinding内容}",以内容="XXX"那就没有错误,但是,当然,我在标签,而不是我在XAML设置页面上的内容让XXX
我有什么想法可以让这个工作吗?
演示项目在这里:
http://walkersretreat.co.nz/files/ThemeIssue.zip
(道歉转贴,我已经这么远在这里没有答案:http://forums.silverlight.net/forums/p/183380/415930.aspx#415930)
编辑提供的答案看起来会起作用.此问题已在此处打开一个问题:https: //connect.microsoft.com/VisualStudio/feedback/details/561183
如果您认为这很重要,请投票!
感谢Wolf Schmidt(MSFT)在www.silverlight.net论坛上的发布,该问题已经被识别,解释并可能按照设计解决.据他介绍,Silverlight 4现在将以更严格的方式考虑Silverlight 3关于ControlTemplates的准动态行为,当ControlTemplate的TargetType不存在属性时,会导致Silverlight 4出错.需要注意的重要一点是,当ControlTemplate中未指定TargetType时,它默认为TargetType ="Control".
该问题的解决方案是为ControlTemplate指定TargetType,以便模板绑定中使用的属性将解析.
这是一个更新的样式,其中为ControlTemplate指定了TargetType:
<Style x:Key="LabelHeader" TargetType="controls:Label">
<Setter Property="Margin" Value="0" />
<Setter Property="Opacity" Value=".6" />
<Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:Label">
<Border BorderBrush="#CCCCCCCC" BorderThickness=".5" Background="#CCEFEFEF">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="2" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
但是,如果IDE/intellisense可以验证TemplateBinding中指定的属性实际存在于ControlTemplate的默认/指定TargetType上,那么它对开发人员非常有用.
来自: - 我们关于Silverlight .NET的论坛讨论:(没有足够的声誉发布> 1个超链接) - 我的MS Connect问题:https://connect.microsoft.com/VisualStudio/feedback/details/561183
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |