我是一个使用C#/ WPF / Telerik-Controls的项目的新手。
有这种风格:
<Style x:Key="MyButtonStyle" Target="{x:Type Button">
<Setter Property="Width" Value="28"/>
<Setter Property="Height" Value="28"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="/MyPrj;component/Images/mybutton.png"
x:Name="image"
Width="24"
Height="24"
Margin="-2,-2-2,-1"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
在XAML中我可以使用这样的风格:
<RadButton Style="{StaticResource MyButtonStyle}"/>
这很好用。按钮的大小为28x28像素,显示已定义的图像。
现在我想以编程方式分配样式:
RadButton button = new RadButton();
button.Style = FindResource("MyButtonStyle") as Style;
程序似乎找到了样式,因为按钮的大小是28x28像素。
但它没有显示图像! 按钮显示文字“图片”。
我做错了什么?
TIA!
编辑:
添加了项目正在使用Telerik-Controls的事实。
更正了样式
答案 0 :(得分:2)
Images
中Styles
有一个不为人知的怪癖。通过像这样定义图像,只会创建一个图像,因此只能出现在您的一个按钮中。因此,在不知道其余代码的情况下,我假设您有两个分配了该样式的按钮。
解决此问题的方法是使用属性x:Shared="false"
单独创建图像,然后设置内容。然后每次引用时都会创建一个新图像。
<Image x:Key="buttonImage" x:Shared="false" Source="/MyPrj;component/Images/mybutton.png"
Width="24" Height="24" Margin="-2,-2-2,-1"/>
<Style x:Key="MyButtonStyle" Target="{x:Type Button">
<Setter Property="Width" Value="28"/>
<Setter Property="Height" Value="28"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Border Content="{StaticResource buttonImage}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>