Если вы разрешите окну изменять размер границ, установив ResizeMode
на CanResize
, вы получите тень от ОС. Затем вы можете установить значения MaxWidth
, MinWidth
, MaxHeight
и MinHeight
, которые будут препятствовать изменению размера.
Если у вас есть окно без рамки без стиля, вам нужно будет обеспечить весь внешний вид окна в вашем собственном визуальном дереве, включая тень, так как эта комбинация настроек аналогична тому, что вы не хотите что обеспечивает ОС.
EDIT:
С этого момента, если размер вашего окна фиксированный, просто добавьте тень, возможно, как <Rectangle/>
в качестве первого элемента в содержимом <Canvas/>
как то так:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" AllowsTransparency="True" Background="Transparent" WindowStyle="None">
<Canvas>
<Rectangle Fill="#33000000" Width="100" Height="100"/>
<Rectangle Fill="#FFFF0000" Width="95" Height="95" />
</Canvas>
</Window>
Обратите внимание, что свойство Fill
этого первого Rectangle
является частично прозрачным, что вы также можете сделать со свойством Opacity
Rectangle
. Вы можете использовать собственную графику или другую форму, чтобы настроить внешний вид тени.
Обратите внимание, что это нарушает ваше требование иметь AllowsTransparency
быть False
, но у вас нет выбора: если вы хотите прозрачности, вы должны разрешить ее.