WPFポップアップ:ポップアップの周囲に境界線を配置する方法は?

StackOverflow https://stackoverflow.com/questions/1427636

  •  07-07-2019
  •  | 
  •  

質問

XAMLに情報を表示する Popup があります。ボックスがポップアップすると、 Border がなく、ページの Background に溶け込んでいるように見えます。必要なのは Border で、理想的には背後にある影で、ある種のレイヤーとフォーカスを表示します。

Popupのスタイルを設定して、境界線と場合によっては影を付ける方法を考えていますか?

役に立ちましたか?

解決 3

ありがとう
 <Border BorderBrush="White" BorderThickness="3,3,0,0">
            <Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>

かなりまともに見えます!

他のヒント

私の意見では、DropShadowEffectに十分な大きさのPopup Borderの周囲にマージンを置く方が簡単です。つまり、

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

ポップアップは透明度を許可する必要があります。つまり、AllowsTransparency = Trueです。

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

ポップアップは現在、ドロップシャドウをサポートしていないようです。リンクを見る

ただし、IMOでかなりうまく機能する回避策を思い付きました。基本的には、Canvasを別の透明Canvas内にネストし、ネストされたCanvasにドロップシャドウを適用するだけです。シンプル。次に例を示します。

        <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>

注意すべき点は、ネストされたキャンバスはコンテナのサイズよりも小さくする必要があるということです。また、AllowsTransparencyも設定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top