首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#/WPF:以编程方式分配样式

C#/WPF:以编程方式分配样式
EN

Stack Overflow用户
提问于 2013-11-15 08:08:42
回答 1查看 2.5K关注 0票数 2

我是一个使用C#/WPF/Telerik控件的项目的新手。

有这样的风格:

代码语言:javascript
复制
<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中,我可以使用如下样式:

代码语言:javascript
复制
<RadButton Style="{StaticResource MyButtonStyle}"/>

,这个工作很好,。该按钮的大小为28x28像素,显示已定义的图像

现在,我想以编程方式分配样式:

代码语言:javascript
复制
RadButton button = new RadButton();
button.Style = FindResource("MyButtonStyle") as Style;

程序似乎找到了样式,因为按钮的大小是28x28像素。

但是它没有显示图像!按钮显示文本" image“而不是

我做错了什么?

蒂娅!

编辑:

  • 增加了项目使用Telerik控件的事实。
  • 纠正风格
EN

回答 1

Stack Overflow用户

发布于 2013-11-15 09:26:56

ImagesStyles中有一个不为人所知的怪癖。通过像这样定义图像,只有一个图像将被创建,永远,因此只能出现在您的一个按钮。因此,在不真正了解其余代码的情况下,我假设您有两个带有该样式的按钮。

要解决这个问题,您可以做的是使用属性x:Shared="false"分别创建图像,然后设置内容。然后,每次引用它时都会创建一个新的图像。

代码语言:javascript
复制
<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>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19996346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档