2012-04-09 2 views
3

                enter image description hereПочему граница «Граница» WPF видима в режиме разработки, но не в приложении?

Дизайнер показывает черную рамку вокруг красном фоне, но фактическое приложение показывает только красный фон. Что дает? Как заставить черную границу быть видимой?

Вот 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> 
+1

+1 для скриншоте – Alain

+0

Это граница, или это просто линия вокруг элемента управления, чтобы вы могли что-то на поверхности дизайна? –

+0

@TonyHopkinson На мгновение я подумал, что вы только что объяснили, что произошло, но на самом деле ... нет, это граница: http://i.imgur.com/ilQb0.png –

ответ

3

Я думаю, что толщина по умолчанию границы во время выполнения составляет 0 - возможно, из-за унаследованный стиль в словаре ресурсов приложения. Стили по умолчанию, унаследованные от глобального ресурсного словаря, часто не отображаются во время разработки.

Попробуйте явно установив BorderThickness="1"

+1

Это происходит даже в пустом проекте ... угадайте, это еще одна вещь WPF, с которой мне придется мириться ... :) –

+1

Как разработчик пользовательского интерфейса WPF, я полностью отказался от использования дизайнера и полагаюсь полностью на мой взгляд и [SNOOP] (http://snoopwpf.codeplex.com/). – Alain

3

Я не знаю, почему граница показывает в режиме конструктора, но вы можете сделать это показать в приложении, добавив явную толщину

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

Привязка к пикселям устройства работала для меня, я думаю, что это был рендеринг на половину пикселя, из-за которого моя граница была наполовину насыщенной. – apc

0
 <Border.BorderBrush> 
      <SolidColorBrush Color="{DynamicResource Gray4}"/> 
     </Border.BorderBrush> 

Заменить значение свойства "Color", используя шестигранный:

 <Border.BorderBrush> 
      <SolidColorBrush Color="#FFD33B3B"/> 
     </Border.BorderBrush> 
Смежные вопросы