Domanda

Ho un Popup nel mio XAML per mostrare alcune informazioni. Quando viene visualizzata la finestra, non ha Border e sembra fondersi con lo Background della pagina. Ha solo bisogno di un Border , e idealmente un'ombra dietro di esso per mostrare una sorta di stratificazione e messa a fuoco.

Qualche idea su come modellare un Popup in modo che abbia un bordo e possibilmente l'effetto ombra?

È stato utile?

Soluzione 3

Grazie, ho finito per dargli un aspetto 3D (quasi) impostando il bordo come:

 <Border BorderBrush="White" BorderThickness="3,3,0,0">
            <Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>

Sembra abbastanza decente!

Altri suggerimenti

Molto più facile secondo me è mettere un margine attorno al Popup Border abbastanza grande per DropShadowEffect, cioè

<Border ... Margin="0 0 8 8">
    <Border.Effect>
        <DropShadowEffect ... />
    </Border.Effect>
    <!-- Popup Content Here -->
</Border>

Il popup dovrebbe consentire la trasparenza, ovvero AllowsTransparency = True.

<Popup PopupAttributes="SetByYou">
 <Border BorderAttribute="SetByYou">
  <!-- Content here -->
 </Border>
</Popup>

Apparentemente i popup attualmente non supportano le ombre discendenti, vedi link .

Tuttavia, ho escogitato una soluzione alternativa che funziona piuttosto bene IMO. Fondamentalmente l'idea è di avere una tela nidificata all'interno di un'altra tela trasparente e applicare solo l'ombra esterna alla tela nidificata. Semplice. Ecco un esempio:

        <Grid>
        <TextBox x:Name="MyTxtBx" Width="50" 
                 Height="20" Text="Hello"/>
        <Popup IsOpen="True" Width="200" Height="100" 
               PlacementTarget="{Binding ElementName=MyTxtBx}" 
               AllowsTransparency="True" >
            <Canvas Background="Transparent">
                <Canvas Background="Green" Width="150" Height="50">
                    <Canvas.BitmapEffect>
                        <DropShadowBitmapEffect Softness=".5" 
                                                ShadowDepth="5" 
                                                Color="Black"/>
                    </Canvas.BitmapEffect>
                    <Label Content="THIS IS A POPUP TEST"/>
                </Canvas>
            </Canvas>
        </Popup>
    </Grid>

I punti da notare sono che la tela nidificata deve essere più piccola della dimensione del suo contenitore. Inoltre, è necessario impostare anche AllowsTransparency.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top