Custom window style w XAML

0

Witam. Chciałbym otrzymać taki oto wynik okna w XAML
user image

niestety nigdzie nie znalazłem dll ani tutorialu jak takie coś osiągnąć. Może ktoś z Was się z takim czymś spotkał i podzieli się ze mną?

1

Trochę się pobawiłem i wymodziłem coś takiego:

<Window
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	x:Class="CustomWindow.MainWindow"
	x:Name="Window"
	Title="MainWindow"
	Width="640" Height="480" WindowStyle="None" ResizeMode="NoResize" AllowsTransparency="True">
	<Window.Background>
        <SolidColorBrush Opacity="0.0" Color="#FF544545"/>
    </Window.Background>
	
	<Grid x:Name="LayoutRoot">
		<Rectangle Fill="Yellow" Margin="20">
			<Rectangle.Effect>
				<BlurEffect Radius="30"/>
			</Rectangle.Effect>
		</Rectangle>
		<Rectangle Fill="#FF544545" Stroke="Yellow" Margin="20" />
	</Grid>
</Window>

I wygląda to tak:
b354c0a101.png

Trzeba by nad tym o wiele więcej popracować, to powinno się udać coś takiego zrobić.

0

Niestety właśnie o to chodzi że rectangle nie wchodzi w grę ponieważ nie wspiera grid'a wewnątrz. Bardziej myślałem o jakiejś darmowej .dll która pozwoli dostać taki efekt jakimś znacznikiem

0

No to dodajesz grida nad rectangle.

    <Grid x:Name="LayoutRoot">
        <Rectangle Fill="Yellow" Margin="20">
            <Rectangle.Effect>
                <BlurEffect Radius="30"/>
            </Rectangle.Effect>
        </Rectangle>
        <Rectangle Fill="#FF544545" Stroke="Yellow" Margin="20" />
        <Grid Margin="20">
         i tu wrzucasz co chcesz
        </Grid> 
    </Grid>

Ale to wciąż jest bardzo dużo pracy z tym. Okna nie można przenosić ani powiększać, to z tym będą największe kłopoty ale myślę że da się to zaimplementować.

0
dam1an napisał(a):

No to dodajesz grida nad rectangle.

    <Grid x:Name="LayoutRoot">
        <Rectangle Fill="Yellow" Margin="20">
            <Rectangle.Effect>
                <BlurEffect Radius="30"/>
            </Rectangle.Effect>
        </Rectangle>
        <Rectangle Fill="#FF544545" Stroke="Yellow" Margin="20" />
        <Grid Margin="20">
         i tu wrzucasz co chcesz
        </Grid> 
    </Grid>

Ale to wciąż jest bardzo dużo pracy z tym. Okna nie można przenosić ani powiększać, to z tym będą największe kłopoty ale myślę że da się to zaimplementować.

No i w ten sposób nie dostaniemy drugiego rectangle na całym oknie. Samą obwódkę można zrobić dopisując do Window

WindowStyle="None" AllowsTransparency="True" BorderBrush="Green" BorderThickness="1"

ale jeszcze cień

chociaż cień mozna zrobić tak jak Ty + na grid ustawić background i efekt jest

1

Nie wiem o co Ci chodzi jakiego drugiego rectangla.
W ten sposób obwódkę dostaniesz ale w złym miejscu.
Zauważ że u mnie background okna jest całkowicie niewidoczny i w środku głównego grida są dwa mniesze od okna rectangle, jeden robi za tło i obwódkę drugi za blur.

0
dam1an napisał(a):

Nie wiem o co Ci chodzi jakiego drugiego rectangla.
W ten sposób obwódkę dostaniesz ale w złym miejscu.
Zauważ że u mnie background okna jest całkowicie niewidoczny i w środku głównego grida są dwa mniesze od okna rectangle, jeden robi za tło i obwódkę drugi za blur.

faktycznie masz rację. poleciałem za daleko

1 użytkowników online, w tym zalogowanych: 0, gości: 1