数据绑定按钮内容到静态资源失败

时间:2010-06-25 09:22:16

标签: c# silverlight xaml visual-studio-2010 silverlight-4.0

我正在尝试在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内容中可以正常工作。

问题出在哪里?我以为我终于理解了这个.. = /

2 个答案:

答案 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上设置模板也有效,但我相信您必须替换控件的整个模板。此方法允许您保留现有的控件模板。