首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以嵌套样式设置RenderTransform

以嵌套样式设置RenderTransform
EN

Stack Overflow用户
提问于 2014-12-23 23:03:54
回答 1查看 9.2K关注 0票数 5

我在Windows8上使用.Net 3.5,默认的Aero主题。

这本应是对不缩放内容的缩放复选框的一个回答,但并不像我想象的那么容易。我试着:

  1. 缩放复选框控件中的框
  2. 在一种样式中,所以我可以将更改应用于所有复选框(或仅适用于某些复选框)。
  3. 与其案文无关,不需要赔偿。

我有一个UserControl和这个参考资料:

代码语言:javascript
复制
<UserControl.Resources>
    <ResourceDictionary>
        <!-- ... -->

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Resources/CheckBoxStyle.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

Resources/CheckBoxStyle.xaml是这样:

代码语言:javascript
复制
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=PresentationFramework">
    <Style TargetType="{x:Type CheckBox}">
        <Style.Resources>
            <Style TargetType="{x:Type BulletDecorator}">
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="2" ScaleY="2"/>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
    </Style>
</ResourceDictionary>

primitives 名称空间是为了防止我想要知道BulletDecorator是什么。

我在Aero主题中找到了BulletDecorator,.Net 3.5来自这里,在“默认WPF主题”链接后面,per 这个答案

我看到我的复选框的大小没有什么不同。我不认为我从主题中抓取了错误的元素类型,但是还会发生什么呢?

编辑1:

BulletDecorator还是包含了复选框的内容,所以我尝试删除需求#3。现在我有了一个巨大的框和巨大的文本,并且希望将文本缩小。这是CheckBoxStyle.xaml

代码语言:javascript
复制
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=PresentationFramework">
    <Style TargetType="{x:Type CheckBox}">
        <Style.Resources>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ContentControl}">
                            <ContentPresenter>
                                <ContentPresenter.LayoutTransform>
                                    <ScaleTransform ScaleX="0.5" ScaleY="0.5" />
                                </ContentPresenter.LayoutTransform>
                            </ContentPresenter>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="LayoutTransform">
            <Setter.Value>
                <ScaleTransform ScaleX="2" ScaleY="2"/>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-24 17:47:44

我找到了一个解决办法,尽管它并不完美。一个更好的答案仍然会被接受。

我使用斯诺普来确定我所关注的元素已经是一个ContentPresenter。它包含一个TextBlock,但由于某些原因不能被样式化(它显示在Snoop层次结构中的括号中)。这是我得到的CheckBoxStyle.xaml

代码语言:javascript
复制
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=PresentationFramework">
    <Style TargetType="{x:Type CheckBox}">
        <Style.Resources>
            <Style TargetType="{x:Type ContentPresenter}">
                <Setter Property="LayoutTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="0.5" ScaleY="0.5" />
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="LayoutTransform">
            <Setter.Value>
                <ScaleTransform ScaleX="2" ScaleY="2"/>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27629285

复制
相关文章

相似问题

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