如何在WPF中制作圆角表单?

如何在WPF中制作圆角表单?,wpf,xaml,rounded-corners,Wpf,Xaml,Rounded Corners,我试图使一个窗口(WPF)的角变圆,但它不起作用,我试图使窗口本身透明,并添加一个圆角的内部边界,但它不起作用 有什么想法吗?您需要将WindowStyle设置为WindowStyle.None,这将删除chrome,然后您可以允许透明度,这是窗口元素中的一个属性,并将背景色设置为transparent。所有这些都可以作为窗口标记的属性来完成 WindowStyle="None" AllowsTransparency="True" Background="Transparent" 要使圆角变圆

我试图使一个窗口(WPF)的角变圆,但它不起作用,我试图使窗口本身透明,并添加一个圆角的内部边界,但它不起作用


有什么想法吗?

您需要将WindowStyle设置为WindowStyle.None,这将删除chrome,然后您可以允许透明度,这是窗口元素中的一个属性,并将背景色设置为transparent。所有这些都可以作为窗口标记的属性来完成

WindowStyle="None"
AllowsTransparency="True"
Background="Transparent"

要使圆角变圆,请使用边框并设置cornerRadius属性

您还需要在窗口周围创建一个几个像素宽的透明边框,否则圆角的边缘会被切掉

不要使用AllowTransparency它很慢而且有问题,请查看此链接,查找该部分“没有Aero的Office 2007–或者,您负责一切”:

编辑:这篇文章中的一些技术是针对Vista的,但是“Office2007没有Aero”一节适用于XP(实际上描述了为Vista编写的哪些软件必须回到XP上)。

它可能会帮助你

<Grid DataContext="{Binding ElementName=root}">
    <Border Background="#90000000" Visibility="{Binding Visibility}">
        <Border BorderBrush="Black" BorderThickness="1" Background="AliceBlue" 
                CornerRadius="10,0,10,0" VerticalAlignment="Center"
                HorizontalAlignment="Center">
            <Border.BitmapEffect>
                <DropShadowBitmapEffect Color="Black" 
                  Opacity="0.5" Direction="270" 
                  ShadowDepth="0.7" />
            </Border.BitmapEffect>
            <Grid Margin="10">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock x:Name="MessageTextBlock" 
                    Text="{Binding Message}" 
                    TextWrapping="Wrap" Margin="5" />
                <UniformGrid Grid.Row="1" Margin="5" 
                          Columns="2" HorizontalAlignment="Center"
                          VerticalAlignment="Bottom">
                    <Button x:Name="OkButton"  
                          Content="Ok" Margin="2"  />
                    <Button x:Name="CancelButton" 

                          Content="Cancel" Margin="2" />
                </UniformGrid>
            </Grid>
        </Border>
    </Border>
</Grid>

我用Windows.Clip解决了这个问题

<Window ....
    <Window.Clip>
        <RectangleGeometry Rect="0,0,857,483" RadiusX="25" RadiusY="25"/>
    </Window.Clip>
</Window>

的确如此。那篇文章有一些很好的例子。我自己也在其中使用过几次这种技术。我的问题是我需要我的项目与XP兼容。希米,这一节中描述的技术与XP兼容正是我想要的,谢谢@CodeMonkey1313。