【问题标题】:Why is the WPF Border’s "Border" visible in design mode, but not in the application?为什么 WPF Border 的“Border”在设计模式下可见,而在应用程序中不可见?
【发布时间】:2012-04-09 16:41:23
【问题描述】:

           

设计器在红色背景周围显示黑色边框,但实际应用只显示红色背景。是什么赋予了?如何强制黑色边框可见?

这是此窗口的 XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        MinWidth="400" MinHeight="300"
        TextOptions.TextFormattingMode="Display">
    <DockPanel Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
        <Button DockPanel.Dock="Top" Content="A button"
                Padding="8,2" Margin="8" />
        <Border DockPanel.Dock="Top" Height="10" BorderBrush="Black"
                SnapsToDevicePixels="True" Background="Red" />
        <Button DockPanel.Dock="Top" Content="A button"
                Padding="8,2" Margin="8" />
    </DockPanel>
</Window>

【问题讨论】:

  • 是边框,还是只是围绕控件的一条线,这样您就可以在设计表面上有一些东西?
  • @TonyHopkinson 有那么一会儿,我以为你刚刚解释了发生的事情,但实际上......不,那是边界:i.imgur.com/ilQb0.png
  • 哦,答案并不总是那么简单。 :(

标签: wpf


【解决方案1】:

我的猜测是,运行时边框的默认粗细为 0 - 可能是因为应用程序资源字典中的继承样式。从全局资源字典继承的默认样式通常不会在设计时显示。

尝试显式设置BorderThickness="1"

【讨论】:

  • 即使在一个空白项目中也会发生这种情况......猜想这是我必须忍受的另一件 WPF 事情...... :)
  • 作为一名WPF UI开发者,我已经完全放弃了使用设计器,完全依赖于我的头脑之眼和SNOOP
【解决方案2】:

我不确定为什么边框会在设计模式下显示,但您可以通过添加显式粗细使其显示在应用程序中

<Border DockPanel.Dock="Top" Height="10" BorderBrush="Black"
        SnapsToDevicePixels="True" Background="Red" BorderThickness="1" />

【讨论】:

  • 对齐设备像素对我有用,我认为它渲染了半个像素,导致我的边框是饱和度的一半。
【解决方案3】:
        <Border.BorderBrush>
            <SolidColorBrush Color="{DynamicResource Gray4}"/>
        </Border.BorderBrush>

使用十六进制替换属性“颜色”的值:

        <Border.BorderBrush>
            <SolidColorBrush Color="#FFD33B3B"/>
        </Border.BorderBrush>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2022-01-01
    • 2015-03-06
    • 2011-03-08
    相关资源
    最近更新 更多