2009-09-15 26 views
14

मुझे कुछ जानकारी दिखाने के लिए मेरे एक्सएएमएल में Popup मिला है। जब बॉक्स पॉप अप होता है, तो उसके पास Border नहीं है और यह पृष्ठ के Background में मिश्रित प्रतीत होता है। इसे सिर्फ Border की आवश्यकता है, और आदर्श रूप से कुछ प्रकार के लेयरिंग और फोकस दिखाने के लिए इसके पीछे एक ड्रॉप-छाया है।डब्ल्यूपीएफ पॉपअप: पॉपअप के चारों ओर सीमा कैसे लगाएं?

किसी भी विचार को एक सीमा बनाने के लिए पॉपअप शैली और संभावित रूप से छाया प्रभाव कैसे बनाया जाए?

+3

आप उन प्रभाव का उपयोग कर के बारे में सावधान रहना चाहिए, समय के सबसे अधिक वे sloooowwww हैं। –

उत्तर

4

धन्यवाद, मैं की तरह सीमा निर्धारित करके यह एक 3 डी की तरह (शायद ही) दिखाई देता है समाप्त हो गया:

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

सुंदर सभ्य लग रहा है!

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

स्पष्ट रूप से पॉपअप वर्तमान में ड्रॉप छाया, see link का समर्थन नहीं करते हैं।

हालांकि, मैं एक कामकाज के साथ आया हूं जो आईएमओ के बजाय काम करता है। असल में विचार यह है कि कैनवास एक और पारदर्शी कैनवास के भीतर घोंसला है और केवल नेस्टेड कैनवास में ड्रॉप छाया लागू करें। सरल। यहाँ एक उदाहरण है:

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

अंक ध्यान दें कि नेस्टेड कैनवास आकार की यह कंटेनर की तुलना में छोटे होने की जरूरत है कर रहे हैं। यह भी अनुमति देता है ट्रांसपेरेंसी भी सेट किया जाना चाहिए।

+0

+1 मेरे बारे में याद दिलाने के लिए 'AllowsTransparency' – quetzalcoatl

25

मेरी राय में बहुत आसान चारों ओर पॉपअप सीमा DropShadowEffect के लिए काफी बड़ी एक मार्जिन रहा है, यानि कि

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

पॉपअप पारदर्शिता की अनुमति चाहिए, कि AllowsTransparency = सच है।

+0

मैं वास्तव में dropshadow सामान के साथ संघर्ष कर रहा था, और यह वास्तव में मुझे बाहर में मदद की। मार्जिन जोड़ना एक शानदार विचार है! – Franchesca

+0

मार्जिन ने मेरे लिए पूरी तरह से काम किया! ग्रेट धन्यवाद – Chris

+0

यह बहुत स्पष्ट है क्योंकि यह उत्तर में है लेकिन पॉपअप पर 'AllowTransparency = "True" 'सबसे महत्वपूर्ण हिस्सा है। यदि आप इसे पसंद करते हैं तो मुझे याद आती है, आपको बस अपने पॉपअप के चारों ओर एक मोटी काला सीमा मिल जाएगी। – Brandon

संबंधित मुद्दे