【问题标题】:Unexpected style effect on windows' border窗口边框上的意外样式效果
【发布时间】:2016-11-23 11:36:29
【问题描述】:

我项目中的 MainWindow 有很多带有边框的控件,因此我在 Window.Resources 中创建了一个样式,该样式将应用于窗口中的每个边框。在其中,我将边距设置为 5,但发生了一些意想不到的事情。

它似乎也将它应用于实际窗口的边框,导致我的窗口中出现黑色轮廓。

为了测试这一点,我创建了一个新项目并添加了这段代码,得到了相同的结果。更奇怪的是,它似乎只是它使用的边距。不是边框厚度或颜色。

<Window.Resources>
    <Style TargetType="{X:Type Border}">
        <Setter Property="BorderBrush" Value="Aqua"/>
        <Setter Property="BorderThickness" Value="5"/>
        <Setter Property="Margin" Value="5"/>
    </Style>
</Window.Resources>

问题是,如何设置此边框的边距以覆盖样式?

我知道我可以为样式添加一个键,但我必须编辑所有边框才能使用此样式。我不能轻易地在这个特定的边框上设置边距,这似乎有点不对劲。

任何帮助/指导表示赞赏。

附:对于任何拼写错误或格式问题,请在我的手机上输入所有内容,因为在编码笔记本电脑上无法访问互联网。

【问题讨论】:

    标签: wpf styles border margin


    【解决方案1】:

    尝试将样式从 Window 移动到 MainContainer Resources

    <Window
        ...
        >
        <Grid x:Name="MainContainer">
            <Grid.Resources>
                <Style TargetType="{x:Type Border}">
                    <Setter Property="BorderBrush" Value="Aqua"/>
                    <Setter Property="BorderThickness" Value="5"/>
                    <Setter Property="Margin" Value="5"/>
                </Style>
            </Grid.Resources>
            ...
        </Grid>
    </Window>
    

    【讨论】:

    • 我知道它应该很容易修复!我仍然觉得它在某些方面如何影响窗口边框而不是其他方面非常奇怪。
    • @Robert 你可以使用Snoop 进入可视化树。原来包裹 MainContainer 的 Border 的 BorderBrush 和 BorderThickness 由 ParentTemplate 设置。这就是为什么只有 Margin 会受到 Style 的影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2014-07-15
    • 2017-01-04
    • 2011-06-30
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多