我正在尝试在Silverlight 4用户控件的资源中设计一组图标,然后在按钮上显示这些图标。
我有
<UserControl.Resources>
<Rectangle x:Key="Icon1" Fill="Black" Width="10" Height="10" />
</UserControl.Resources>
和
<Button x:Name="Button1"
Width="50" Height="50"
Content="{Binding Source={StaticResource Icon1}}" />
我也试过... Content="{StaticResource Icon1}"
。两者在VS 2010的XAML设计器中都很好,但是当我尝试使用XAMLParseException运行它时失败。第一个抱怨没有落入预期范围的论点,第二个人只是说“未能分配财产”。将Rectangle直接复制到Buttons内容中可以正常工作。
问题出在哪里?我以为我终于理解了这个.. = /
答案 0 :(得分:2)
我建议使用模板而不是设置内容。
<ControlTemplate
x:Key="IconTemplate">
<Rectangle x:Key="Icon1" Fill="Black" Width="10" Height="10" />
</ControlTemplate>
<Style x:Key="IconStyle" TargetType="Button">
<Setter Property="Template" Value="{StaticResource IconTemplate}"/>
</Style>
<Button x:Name="Button1"
Width="50" Height="50"
Style="{StaticResource IconStyle}" />
HTH
答案 1 :(得分:0)
我通过将ContentTemplate设置为DataTemplate来完成此操作:
<UserControl.Resources>
<DataTemplate x:Key="Icon1">
<Rectangle Fill="Black" Width="10" Height="10" />
</DataTemplate>
</UserControl.Resources>
按钮:
<Button x:Name="Button1"
Width="50" Height="50"
ContentTemplate="{StaticResource Icon1}" />
在Button上设置模板也有效,但我相信您必须替换控件的整个模板。此方法允许您保留现有的控件模板。