WPF Popup имеет черную рамку вместо прозрачной - PullRequest
3 голосов
/ 03 апреля 2012

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

Popup with border

var p = new Popup {
     PlacementTarget = target,
     IsOpen = true,
     StaysOpen = false,
     AllowsTransparency = true
};

// Add the popup content
p.Child = new Views.MapLocationInformation {DataContext = context};

Пользовательский элемент управления MapLocationInformation определяется в XAML следующим образом:

<UserControl ...
 mc:Ignorable="d" 
 Background="Transparent"
 d:DesignHeight="65" d:DesignWidth="401">

 <Border BorderThickness="1"
        CornerRadius="5"
        BorderBrush="{StaticResource ExpanderHeaderBorderGradient}"
        Background="White"
        Margin="0 0 8 8">

        <Stackpanel> ... </Stackpanel>
     </Border>
</UserControl>

Я не могу найти какую-либо комбинацию настройки границы, фона и прозрачности, которая сделала бы черную область прозрачной. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Ваше всплывающее окно позволяет прозрачность, но не использует прозрачный фон. Изменить на:

var p = new Popup {
     PlacementTarget = target,
     IsOpen = true,
     StaysOpen = false,
     AllowsTransparency = true,
     Background = Brushes.Transparent
};

Это должно сработать. Кроме того, причина, по которой черный бит шире справа и снизу, связана с Margin на вашем Border, что на самом деле бесполезно. Я предлагаю вам удалить это тоже.

1 голос
/ 16 ноября 2012

Я просто столкнулся с той же проблемой.Проблема заключается в том, что когда IsOpen свойство всплывающего окна слишком рано True, прозрачность не работает должным образом.

Мое решение состояло в том, чтобы переместить установку IsOpen в значение true из конструкции вLoaded событие всплывающего окна.

myPopup.Loaded += (sender, args) => { myPopup.IsOpen = true; };
1 голос
/ 03 апреля 2012

Это вызвано свойством Background MapLocationInformation. Просто установите Background вашего UserControl на ноль и AllowsTransparency на True, чтобы исправить это, например:

<UserControl ...
 mc:Ignorable="d" 
 Background="{x:Null}"
 AllowsTransparency="True"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...