【问题标题】:Making all images be of the same size and margin使所有图像具有相同的大小和边距
【发布时间】:2015-09-20 21:10:08
【问题描述】:

我注意到我在堆栈面板中有一些图像,并且每个图像都完全相同设置了相同的大小、边距、对齐方式等。我不想为风格创建一个全球资源。是否可以在 this specific 面板中声明本地样式并且仅用于图像(TargetType 在这种情况下就足够了)?

我想要this solution 的一些东西,但我不使用全局样式资源。

<StackPanel.Resources>
  <Style TargetType="Image">
    <Setter Property="Width" Value="24" />
    ...
  </Style>
</StackPanel.Resources>
<Image Source="{StaticResource Poof}"
         VerticalAlignment="Top"
         ...
         Margin="20,20,20,0" />

【问题讨论】:

  • 在您的代码中,样式不是全局的,而是控制级别(stackPanel),您寻求什么改进?
  • @Nikita 出于某种原因(在撰写本文时我不知道),该属性不会影响图像的外观。我已经从图像本身中删除了设置,但控件似乎仍然看不到样式。当然,我认为我做错了什么,尽管尝试遵循链接到的示例。

标签: wpf xaml stackpanel


【解决方案1】:

只需将样式放入面板的资源中,它将应用于面板内该类型的所有项目。

例如:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Width" Value="200" />
        </Style>
    </StackPanel.Resources>
    <TextBox  Margin="20" />
    <TextBox  Margin="20" />
    <TextBox  Margin="20" />
    <TextBox  Margin="20" />
</StackPanel>

所有文本框的宽度都为 200 个单位。

除非您使用单个项目的设置来覆盖样式。也许你正在这样做?

【讨论】:

  • 我也是这么想的。但似乎它只是没有效果。也许我遗漏了一些东西...请稍后查看我的问题的补充内容。
  • @KonradViltersten 我已经编辑了我的答案以包含我刚刚测试并知道可以工作的代码。根据您提供的信息,我只能猜测问题可能是什么,但这个概念是可行的。
【解决方案2】:

尝试在资源中添加样式。

    <Page.Resources>
            <Style TargetType="Image">
                <Setter Property="Width" Value="80"/>
                <Setter Property="Height" Value="80"/>
            </Style>
    </Page.Resources>

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多