WPF 팝업 UI가 검은색으로 표시됨
WPF 팝업컨트롤을 사용하고 있는데 배경이 검은색으로 표시됩니다.StackPanel에 Background=를 삽입했습니다.'투명하다'고 하지만 도움이 되지 않는다.
<Popup PlacementTarget="{Binding ElementName=parentStackPanel}" Placement="Center"
IsOpen="False" Name="m_popWaitNotifier" PopupAnimation="None"
AllowsTransparency="False">
<StackPanel Orientation="Vertical" Background="Transparent">
<uc:CircularProgressBar x:Name="CB" StartupDelay="0"
RotationsPerMinute="20"
Height="25" Foreground="White"
Margin="12"/>
</StackPanel>
</Popup>
팝업의 배경을 투명하게 하려면 어떻게 해야 합니까?
요.AllowsTransparency="True"
다음은 예를 제시하겠습니다.
<Grid>
<StackPanel>
<Button Click="Button_Click" Width="100" Height="20" Content="Click" />
<Popup x:Name="popup" Width="100" Height="100" AllowsTransparency="True">
<Grid Background="Transparent">
<TextBlock Text="Some Text" />
</Grid>
</Popup>
</StackPanel>
</Grid>
클릭 핸들러
private void Button_Click(object sender, RoutedEventArgs e)
{
popup.Visibility = System.Windows.Visibility.Visible;
popup.IsOpen = true;
}
Popup
, " " "Window
좀처럼 볼 수 없다Window
Window
가지고 있다Background
[(property)]는만, [(Solid Color)]를 는,Window.Background
로로 합니다.Transparent
검정색도 될 거예요. ★★★★★★★★★★★★★★★★★.Popup
이 없다Background
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 이 문제는 "실패"됩니다.
「 」를 Popup
, 「」를 설정할 .AllowsTransparency="True"
「」를 하고 싶은 「」를 참조해 주세요.Popup
단색이기 위해, 가장 간단한 접근법은 의 아이를 만드는 것이다.Popup
a Panel
를 하고 있습니다.Background
하고, 그 색상으로 설정한 , 그 아이의 합니다.Panel
이 될 수 .Popup
추천드립니다.Grid
의 레이아웃에 영향을 주지 Popup
원하는 배경색을 주는 효과밖에 없습니다.
허용 투명도가 참으로 설정되고 수직 및 수평 정렬이 중앙에 배치되며 높이와 너비가 자동으로 설정되었는지 확인합니다.
예를 들어 다음과 같습니다.
<Popup Name="popup1" Placement="Top" PlacementTarget="{Binding ElementName=button2}" AllowsTransparency="True" Height="Auto" Width="Auto" Panel.ZIndex="1" HorizontalOffset="-5" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel Height="92" HorizontalAlignment="Left" Margin="93,522,0,0" Name="stackPanelPop" VerticalAlignment="Top" Width="147">
</StackPanel>
</Popup>
다른 생각할 수 있는 원인은 다음과 같습니다.
- AllowTransparency= 앞에 IsOpen="True"를 마크업에 사용합니다.맞다
순서를 바꾸면 수정됩니다.
내 추측으로는 Circular Progress Bar가 실제로 Black 배경의 원인이 되고 있는 것 같습니다.컨트롤 중 하나에 Style(스타일) 또는 다른 무언가가 설정되어 있는 경우(Popup(팝업) 또는 StackPanel(스택 패널) 등)에만 이 문제가 발생할 수 있습니다.
체크박스를 켜면 팝업으로 TextBlock이 표시되는 빠른n 더티 예를 다음에 나타냅니다.선택한 색상은 단지 시각적으로 눈에 띄는 것을 확인하기 위한 것입니다.
<StackPanel x:Name="stackPanelLayout">
<StackPanel.Background>
<RadialGradientBrush Center="0.75, 0.75"
SpreadMethod="Reflect">
<GradientStop Color="LightBlue" Offset="0" />
<GradientStop Color="SeaGreen" Offset="0.5" />
<GradientStop Color="MidnightBlue" Offset="0.75" />
</RadialGradientBrush>
</StackPanel.Background>
<CheckBox x:Name="chkShowPopup"
FontSize="20"
Foreground="White"
Content="Show Popup" />
<Popup PlacementTarget="{Binding ElementName=stackPanelLayout}"
Placement="Center"
IsOpen="{Binding ElementName=chkShowPopup, Path=IsChecked}"
Name="m_popWaitNotifier"
PopupAnimation="Slide"
AllowsTransparency="True">
<StackPanel Orientation="Vertical" Background="Transparent">
<TextBlock Foreground="White" FontSize="30" FontWeight="Bold" Text="PopUp" />
</StackPanel>
</Popup>
</StackPanel>
다음 두 가지 테스트를 수행하여 무슨 일이 일어나고 있는지 판별할 수 있습니다.
- CircularProgressBar를 단순한 텍스트 블록 또는 유형이 적용되지 않은 다른 컨트롤로 바꿉니다.
- Circular Progress Bar를 스탠드아론 컨트롤로 창 또는 빈 테스트창에 놓습니다.
이 기사에 따르면 WPF 팝업이 검은색인 이유와 적절한 위치를 지정하는 방법 다음과 같습니다.
팝업에서 AllowsTransparency 속성을 True로 설정하고 PlacementTarget 및 Placement 속성을 설정하여 팝업이 열리는 위치를 제어해야 합니다.
해당 코드에 따라주세요.
<Popup PlacementTarget="{Binding ElementName=parentStackPanel}" Placement="Center" IsOpen="False" Name="m_popWaitNotifier" PopupAnimation="None" AllowsTransparency="False">
<StackPanel Orientation="Vertical" Background="Transparent">
<uc:CircularProgressBar x:Name="CB" StartupDelay="0" RotationsPerMinute="20" Height="25" Foreground="White" Margin="12"/>
</StackPanel>
</Popup>
PlacementTarget은 parentStackPanel로 설정되어 있는데 질문자는 다음을 언급했습니다.
Hi Svetlozar: 나는 이것을 시도했지만 효과가 없었다.팝업 외부에 스택 패널이 없지만 팝업 내에 스택 패널이 있어 이를 제어할 수 있습니다.
이 문제는 PlacementTarget 'parentStackPanel'이 존재하지 않기 때문에 팝업에서 찾을 수 없다는 것일 수 있습니다.
문제는 그리드가 방향이 아니라는 것입니다.팝업에서 제외됩니다.팝업 내의 모든 컨트롤에서 VerticalAlignment 및 horizontalAlignment를 제거하면 올바르게 작동합니다.
꽤 오래되었지만 도움이 될 수 있습니다.더하다InitializeComponent();
내 문제를 해결했어
class MyPopupClass : Popup {
/*
...
*/
public MyPopupClass () {
InitializeComponent();
/*
...
*/
}
/*
...
*/
}
언급URL : https://stackoverflow.com/questions/3907591/wpf-popup-ui-showing-black
'programing' 카테고리의 다른 글
Javascript의 PMT 함수 (0) | 2023.04.15 |
---|---|
Apache POI의 컬럼 크기를 자동화하는 방법은 무엇입니까? (0) | 2023.04.15 |
서명 중 오류가 발생했습니다. (0) | 2023.04.10 |
문서 폴더의 파일 목록을 가져오는 중 (0) | 2023.04.10 |
heroku 코드를 배포할 때 사용 권한이 거부되었습니다(공개 키).치명적: 리모트엔드가 예기치 않게 절단되었습니다. (0) | 2023.04.10 |