C#/WPF:以编程方式指定样式

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">

我对一个使用C#/WPF/Telerik控件的项目还不熟悉

有这样一种风格:

<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>