programing

WPF 팝업 UI가 검은색으로 표시됨

newsource 2023. 4. 15. 08:55

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좀처럼 볼 수 없다WindowWindow 가지고 있다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>

다음 두 가지 테스트를 수행하여 무슨 일이 일어나고 있는지 판별할 수 있습니다.

  1. CircularProgressBar를 단순한 텍스트 블록 또는 유형이 적용되지 않은 다른 컨트롤로 바꿉니다.
  2. 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