C# 将按钮内容数据绑定到静态资源失败
我试图在Silverlight 4用户控件的资源中设计一组图标,然后在按钮上显示这些图标 我有C# 将按钮内容数据绑定到静态资源失败,c#,silverlight,xaml,visual-studio-2010,silverlight-4.0,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> 及 我也试过。。。Content=“{StaticResource Icon1}”。
<UserControl.Resources>
<Rectangle x:Key="Icon1" Fill="Black" Width="10" Height="10" />
</UserControl.Resources>
及
我也试过。。。Content=“{StaticResource Icon1}”
。两者在VS2010的XAML设计器中都显示良好,但在我尝试使用XAMLParseException运行它时失败。第一个抱怨论点不在预期范围内,第二个只是说“未能分配属性”。直接将矩形复制到按钮内容中效果很好
问题在哪里?我想我终于明白了=/ 我建议使用模板,而不是设置内容
<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我通过将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}" />
在按钮上设置模板也可以,但我相信您必须替换控件的整个模板。此方法允许您保留现有的控件模板。谢谢您的回答!我想知道,为什么你会选择这种方式而不是直接设置内容?有几个原因;1) 这似乎是微软希望我们使用WPF的方式2)这可以更好地测试,以确保控件可以使用元素(模板和样式)3)对我来说,这是一种更具可伸缩性的方法,但这可能是有争议的。我尝试了这种方法,但我的(触发行为)模板内控件的可视状态未维护。有什么线索吗?…我在WPF中这样做了,但我认为它也适用于Silverlight。
<Button x:Name="Button1"
Width="50" Height="50"
ContentTemplate="{StaticResource Icon1}" />