C#/WPF:以编程方式指定样式
我对一个使用C#/WPF/Telerik控件的项目还不熟悉 有这样一种风格:C#/WPF:以编程方式指定样式,c#,wpf,C#,Wpf,我对一个使用C#/WPF/Telerik控件的项目还不熟悉 有这样一种风格: <Style x:Key="MyButtonStyle" Target="{x:Type Button"> <Setter Property="Width" Value="28"/> <Setter Property="Height" Value="28"/> <Setter Property="ContentTemplate">
<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>
程序似乎找到了样式,因为按钮的大小是28x28像素
但是它没有显示图像按钮显示文本“图像”
我做错了什么
蒂亚
编辑:
- 添加了项目使用Telerik控件的事实
- 更正了样式
- 在
样式中的图像
有一个未知的怪癖。通过像这样定义图像,只会创建一个图像,因此只能出现在一个按钮中。因此,在不了解代码其余部分的情况下,我假设您有两个指定了该样式的按钮
要解决此问题,可以使用属性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>
图像路径可能是个问题。尝试给出相对路径wrt exe位置。检查输出窗口。它是否有关于图像的任何消息?请检查图像中的“Margin”参数。看起来不对劲,我把样式上的空白去掉了。没用。我觉得你的风格不合适。什么是目标
?ContentTemplate
的
标记在哪里?我更改了“不要这样做。在按钮的DataTemplate中,您不想添加新按钮。”。
RadButton button = new RadButton();
button.Style = FindResource("MyButtonStyle") as Style;
<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>