WPF قافزة: كيفية وضع حد حول المنبثقة؟
سؤال
ولقد حصلت على Popup
في بلدي XAML لاظهار بعض المعلومات. عندما يظهر مربع الارتفاع، وبالتالي لا يوجد لديه Border
ويبدو أن الذوبان في Background
من الصفحة. هو فقط يحتاج إلى Border
، ومثالي انخفاض الظل وراء ذلك لإظهار نوع من طبقات والتركيز.
وأي أفكار كيفية أسلوب منبثقة أن يكون لها حدود وربما ظل التأثير؟
المحلول 3
شكرا، انتهى بي الأمر يعطيها (بالكاد) ظهور مثل 3D عن طريق وضع الحدود مثل:
<Border BorderBrush="White" BorderThickness="3,3,0,0">
<Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>
ويبدو لائق جدا!
نصائح أخرى
وأسهل بكثير في رأيي هو وضع هامشا حول قافزة الحدود كبيرة بما يكفي لDropShadowEffect، أي بمعنى.
<Border ... Margin="0 0 8 8">
<Border.Effect>
<DropShadowEffect ... />
</Border.Effect>
<!-- Popup Content Here -->
</Border>
ووقافزة ينبغي أن يسمح الشفافية، وهذا هو AllowsTransparency = صحيح.
<Popup PopupAttributes="SetByYou">
<Border BorderAttribute="SetByYou">
<!-- Content here -->
</Border>
</Popup>
ويبدو بالنوافذ لا تدعم حاليا الظلال، <وأ href = "http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/71a1da61-9e6e-47e5-be20-6190aedc3c95" يختلط = "نوفولو noreferrer"> انظر الرابط .
ولكن، لقد جئت مع الحل هذا الذي يعمل بشكل جيد بدلا IMO. في الأساس والفكرة هي أن يكون قماش متداخلة داخل قماش شفاف آخر، ومجرد تطبيق شبح الهبوط إلى قماش متداخلة. بسيط. هيريس مثال:
<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 يجب تعيين أيضا.