【发布时间】:2014-03-04 20:35:30
【问题描述】:
我已经努力尝试制作资源字典好几个星期了。如果我要添加一个按钮或一个复选框,那么资源字典就是它们已经被格式化的地方。我有几个问题,除了按钮对我有用之外,什么也得不到。我在 Visual Studio 中使用 Silverlight。这是 App.xaml 部分下的代码。这部分应该没有任何问题,但我正在输入以防万一。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources_Theme\Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
下面的代码注释为复选框的位置是问题所在。我得到的错误是 Unexpected ATTRIBUTE in parse rule PropertyElement ::= 。物业内容? ENDTAG .. 我不知道如何解决这个问题,我已经尝试了几件事。该按钮工作正常,但复选框没有。复选框和按钮之间的代码应该非常相似,所以我不确定代码哪里错了。如果有人可以帮助我,那就太好了。另外,作为次要问题,有人可以告诉我如何让 Foreground="White" FontFamily="Arial Bold FontSize="16" 使用按钮。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
x:Class="DanaTraining.App">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<!--Button-->
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Rectangle RadiusY="20" RadiusX="20" Stroke="Black">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0.828"/>
<GradientStop Color="#FF4F1818" Offset="0.491"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--CheckBox-->
<Style TargetType="CheckBox" x:Key="CheckBoxStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<Grid>
<CheckBox>
<CheckBox.Foreground>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0.828"/>
<GradientStop Color="#FF4F1818" Offset="0.491"/>
</LinearGradientBrush>
</CheckBox.Foreground>
</CheckBox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
最后,如果有人能告诉我为 Silverlight 找到一个资源字典模板,那就太好了。我真的很喜欢
【问题讨论】:
-
无效。您不能在此处添加属性,因为 已经有效地是 Setter 对象的 Value 属性。 -
那不应该在那里。当我试图让 Foreground="White" FontFamily="Arial Bold FontSize="16" 与按钮一起工作时,它一定已经结束了。无论哪种方式,这条评论都没有回答我提出的两个问题中的任何一个。 1)如何修复复选框(按钮已经可以使用,我不需要)或 2)如何让 Foreground="White" FontFamily="Arial Bold FontSize="16" 使用按钮。
-
我认为您在这里遇到的问题不是如何让 Foreground="White" 与按钮一起使用,因为这是出厂时的工作方式。您正在为您的按钮创建一个新模板,因此您将需要处理诸如 Foreground 之类的属性在模板中的处理方式。查看 WPF 中的模板绑定和模板控件。有大量在线资源可以提供帮助。
-
这不是 WPF 它是 Silverlight 请阅读所提出的问题。谢谢。
标签: c# visual-studio silverlight templates resourcedictionary