Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WPF获取工具箱样式窗口_C#_Wpf_Wpftoolkit - Fatal编程技术网

C# 使用WPF获取工具箱样式窗口

C# 使用WPF获取工具箱样式窗口,c#,wpf,wpftoolkit,C#,Wpf,Wpftoolkit,我正在使用WPF工具包和WPF工具包扩展,请注意,当我通过以下方式显示消息框时: MessageBox.Show("..."); 我得到以下信息 我想让我的主应用程序窗口也使用这种样式。有办法吗 编辑:我试过WindowStyle=ToolWindow,但它不起作用 编辑:对于下面的答案,请参见下图: 此外,我希望它有一个最大化和最小化按钮,但与关闭按钮相同的风格 谢谢大家! 将其添加到xaml编辑器中的窗口标记中 WindowsStyle=ToolWindow将其添加到xaml编辑器中的窗口

我正在使用WPF工具包和WPF工具包扩展,请注意,当我通过以下方式显示消息框时:

MessageBox.Show("...");
我得到以下信息

我想让我的主应用程序窗口也使用这种样式。有办法吗

编辑:我试过WindowStyle=ToolWindow,但它不起作用

编辑:对于下面的答案,请参见下图:

此外,我希望它有一个最大化和最小化按钮,但与关闭按钮相同的风格


谢谢大家!

将其添加到xaml编辑器中的窗口标记中


WindowsStyle=ToolWindow

将其添加到xaml编辑器中的窗口标记中


WindowsStyle=ToolWindow你的问题很模糊。你在任何地方都不会说你想要MessageBox的哪一部分风格,但我想我知道你想要的是什么,同样的颜色和窗户铬

由于您使用的是MessageBox的扩展工具包版本,因此有两个选项

首先,您可以关闭Xaml中的每个窗口实例,并用extToolkit:ChildWindow extToolkit替换它,extToolkit是xmlns:extToolkit的名称空间=http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended.

这是一个快速的选择,但会让你在一些事情上陷入困境。ChildWindow中缺少一个的标题,而使用了标题。如果你对自己的窗户不做太多的事情,这对你来说就足够了

第二个选项是使用MessageBox或ChildWindow模板中的相同样式信息来模板化窗口本身。扩展工具包ChildWindow的模板位于此答案的底部,但需要进行一些修改才能与Window的属性保持一致。由于chrome是在模板中实现的,因此您还必须隐藏窗口chrome,并使用无边界表单

这不是最好的情况,老实说,扩展工具包应该有自己的窗口实现

如果我是你,我会试着把你的窗户换成儿童窗户

这是模板-

<ControlTemplate x:Key="ChildWindowControlTemplate1" TargetType="{x:Type extToolkit:ChildWindow}">
        <Grid x:Name="Root">
            <Grid.Resources>
                <Style x:Key="FocusVisualStyle" TargetType="{x:Type Control}">
                    <Setter Property="BorderBrush" Value="Black"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="Margin" Value="-1"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Rectangle Fill="{TemplateBinding Background}" Margin="{TemplateBinding Margin}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="0.5" StrokeDashArray="4 3">
                                    <Rectangle.RenderTransform>
                                        <TranslateTransform X="{Binding Left}" Y="{Binding Top}"/>
                                    </Rectangle.RenderTransform>
                                </Rectangle>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
                <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
            </Grid.Resources>
            <Grid x:Name="PART_WindowRoot" HorizontalAlignment="Left" Height="{TemplateBinding Height}" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" VerticalAlignment="Top" Width="{TemplateBinding Width}">
                <Grid.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Grid.RenderTransform>
                <Grid x:Name="WindowGrid">
                    <Border BorderBrush="{TemplateBinding WindowBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5,5,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
                    <Grid Background="{x:Null}" Margin="0">
                        <Border x:Name="WindowBorder" Background="{TemplateBinding WindowBackground}" CornerRadius="4,4,0,0" Margin="1" Opacity="{TemplateBinding WindowOpacity}"/>
                        <Border BorderBrush="White" BorderThickness="1" CornerRadius="4,4,0,0" Margin="1" Opacity="0.7"/>
                    </Grid>
                </Grid>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" MinHeight="26"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid x:Name="ContentGrid" Margin="6,0,6,6" Grid.Row="1">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Border BorderBrush="White" BorderThickness="1" CornerRadius="1"/>
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0.1" Margin="1">
                            <ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"/>
                        </Border>
                    </Grid>
                    <Border x:Name="PART_DragWidget" Background="Transparent" Grid.Column="1" CornerRadius="5,5,0,0" Margin="1,1,1,0">
                        <Grid>
                            <Grid x:Name="CaptionHeader" Margin="1,1,105,0" VerticalAlignment="Center">
                                <ContentControl x:Name="Caption" Content="{TemplateBinding Caption}" Foreground="{TemplateBinding CaptionForeground}" HorizontalAlignment="Stretch" IsTabStop="False" Margin="5,0,0,0"/>
                            </Grid>
                        </Grid>
                    </Border>
                </Grid>
                <Border BorderBrush="#A5FFFFFF" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3" HorizontalAlignment="Right" Margin="0,1,7,0" VerticalAlignment="Top">
                    <Button x:Name="PART_CloseButton" Height="17" IsTabStop="False" Style="{TemplateBinding CloseButtonStyle}" Visibility="{TemplateBinding CloseButtonVisibility}" Width="43">
                        <Path Data="M0.5,0.5L4.5178828,0.5 6.0620003,3.125 7.4936447,0.5 11.5,0.5 11.5,1.5476431 8.7425003,6.1201854 11.5,10.359666 11.5,11.5 7.4941902,11.5 6.0620003,8.8740005 4.5172949,11.5 0.5,11.5 0.5,10.43379 3.3059995,6.1201582 0.5,1.4676378 0.5,0.5z" Fill="#E4FFFFFF" HorizontalAlignment="Center" Height="10" Stretch="Fill" Stroke="#FF535666" VerticalAlignment="Center" Width="12"/>
                    </Button>
                </Border>
            </Grid>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="WindowState" Value="Closed">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

你的问题很模糊。你在任何地方都不会说你想要MessageBox的哪一部分风格,但我想我知道你想要的是什么,同样的颜色和窗户铬

由于您使用的是MessageBox的扩展工具包版本,因此有两个选项

首先,您可以关闭Xaml中的每个窗口实例,并用extToolkit:ChildWindow extToolkit替换它,extToolkit是xmlns:extToolkit的名称空间=http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended.

这是一个快速的选择,但会让你在一些事情上陷入困境。ChildWindow中缺少一个的标题,而使用了标题。如果你对自己的窗户不做太多的事情,这对你来说就足够了

第二个选项是使用MessageBox或ChildWindow模板中的相同样式信息来模板化窗口本身。扩展工具包ChildWindow的模板位于此答案的底部,但需要进行一些修改才能与Window的属性保持一致。由于chrome是在模板中实现的,因此您还必须隐藏窗口chrome,并使用无边界表单

这不是最好的情况,老实说,扩展工具包应该有自己的窗口实现

如果我是你,我会试着把你的窗户换成儿童窗户

这是模板-

<ControlTemplate x:Key="ChildWindowControlTemplate1" TargetType="{x:Type extToolkit:ChildWindow}">
        <Grid x:Name="Root">
            <Grid.Resources>
                <Style x:Key="FocusVisualStyle" TargetType="{x:Type Control}">
                    <Setter Property="BorderBrush" Value="Black"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="Margin" Value="-1"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Rectangle Fill="{TemplateBinding Background}" Margin="{TemplateBinding Margin}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="0.5" StrokeDashArray="4 3">
                                    <Rectangle.RenderTransform>
                                        <TranslateTransform X="{Binding Left}" Y="{Binding Top}"/>
                                    </Rectangle.RenderTransform>
                                </Rectangle>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
                <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
            </Grid.Resources>
            <Grid x:Name="PART_WindowRoot" HorizontalAlignment="Left" Height="{TemplateBinding Height}" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" VerticalAlignment="Top" Width="{TemplateBinding Width}">
                <Grid.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Grid.RenderTransform>
                <Grid x:Name="WindowGrid">
                    <Border BorderBrush="{TemplateBinding WindowBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5,5,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
                    <Grid Background="{x:Null}" Margin="0">
                        <Border x:Name="WindowBorder" Background="{TemplateBinding WindowBackground}" CornerRadius="4,4,0,0" Margin="1" Opacity="{TemplateBinding WindowOpacity}"/>
                        <Border BorderBrush="White" BorderThickness="1" CornerRadius="4,4,0,0" Margin="1" Opacity="0.7"/>
                    </Grid>
                </Grid>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" MinHeight="26"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid x:Name="ContentGrid" Margin="6,0,6,6" Grid.Row="1">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Border BorderBrush="White" BorderThickness="1" CornerRadius="1"/>
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0.1" Margin="1">
                            <ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"/>
                        </Border>
                    </Grid>
                    <Border x:Name="PART_DragWidget" Background="Transparent" Grid.Column="1" CornerRadius="5,5,0,0" Margin="1,1,1,0">
                        <Grid>
                            <Grid x:Name="CaptionHeader" Margin="1,1,105,0" VerticalAlignment="Center">
                                <ContentControl x:Name="Caption" Content="{TemplateBinding Caption}" Foreground="{TemplateBinding CaptionForeground}" HorizontalAlignment="Stretch" IsTabStop="False" Margin="5,0,0,0"/>
                            </Grid>
                        </Grid>
                    </Border>
                </Grid>
                <Border BorderBrush="#A5FFFFFF" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3" HorizontalAlignment="Right" Margin="0,1,7,0" VerticalAlignment="Top">
                    <Button x:Name="PART_CloseButton" Height="17" IsTabStop="False" Style="{TemplateBinding CloseButtonStyle}" Visibility="{TemplateBinding CloseButtonVisibility}" Width="43">
                        <Path Data="M0.5,0.5L4.5178828,0.5 6.0620003,3.125 7.4936447,0.5 11.5,0.5 11.5,1.5476431 8.7425003,6.1201854 11.5,10.359666 11.5,11.5 7.4941902,11.5 6.0620003,8.8740005 4.5172949,11.5 0.5,11.5 0.5,10.43379 3.3059995,6.1201582 0.5,1.4676378 0.5,0.5z" Fill="#E4FFFFFF" HorizontalAlignment="Center" Height="10" Stretch="Fill" Stroke="#FF535666" VerticalAlignment="Center" Width="12"/>
                    </Button>
                </Border>
            </Grid>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="WindowState" Value="Closed">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

我想在这里添加一个免责声明,我很快就把它拼凑在一起,这是出于好奇,而不是出于任何原因。我没有做过太多的测试,除了在上面删除一些控件并运行它。它是有效的,但不应该被认为是完全完整的。我也认为可能有更好的方法来做到这一点,但我认为这至少会给你一个良好的开端

向项目中添加新的ResourceDictionary,并添加以下XAML:

<ResourceDictionary
  x:Class="CustomWindow.BaseResource"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Style x:Key="WindowStyle" TargetType="{x:Type Window}">
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="WindowStyle" Value="None" />
    <Setter Property="ResizeMode" Value="NoResize" />
    <Setter Property="Background" Value="White" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Window}">
          <Border
            x:Name="WindowBorder"
            BorderBrush="Black"
            BorderThickness="1">
            <Border.Background>
              <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Offset="0" Color="White" />
                <GradientStop Offset="1" Color="#FFDADADA" />
              </LinearGradientBrush>
            </Border.Background>
            <Grid
              Width="{TemplateBinding Width}"
              Height="{TemplateBinding Height}"
              MinWidth="{TemplateBinding MinWidth}"
              MinHeight="{TemplateBinding MinHeight}"
              HorizontalAlignment="Left"
              VerticalAlignment="Top"
              Cursor="Arrow">
              <Grid.RowDefinitions>
                <RowDefinition Height="25" />
                <RowDefinition Height="*" />
              </Grid.RowDefinitions>
              <TextBlock
                Width="500"
                Height="23"
                Margin="11,2,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Text="{TemplateBinding Title}" />
              <Rectangle
                x:Name="TitleBar"
                Fill="Transparent"
                MouseDown="TitleBar_MouseDown" />
              <Rectangle
                Grid.RowSpan="2"
                Width="10"
                HorizontalAlignment="Left"
                Cursor="SizeWE"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Left" />
              <Rectangle
                Grid.RowSpan="2"
                Width="10"
                HorizontalAlignment="Right"
                Cursor="SizeWE"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Right" />
              <Rectangle
                Height="5"
                VerticalAlignment="Top"
                Cursor="SizeNS"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Top" />
              <Rectangle
                Grid.Row="1"
                Height="10"
                VerticalAlignment="Bottom"
                Cursor="SizeNS"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Bottom" />
              <StackPanel
                Margin="10,0"
                HorizontalAlignment="Right"
                VerticalAlignment="Top"
                Orientation="Horizontal">
                <Button
                  x:Name="MinimizeButton"
                  Width="43"
                  Height="17"
                  Click="MinimizeButton_Click"
                  IsTabStop="False">
                  min
                </Button>
                <Button
                  x:Name="MaximizeButton"
                  Width="43"
                  Height="17"
                  Margin="5,0"
                  Click="MaximizeButton_Click"
                  IsTabStop="False">
                  max
                </Button>
                <Button
                  x:Name="CloseButton"
                  Width="43"
                  Height="17"
                  Click="CloseButton_Click"
                  IsTabStop="False">
                  <Path
                    Width="12"
                    Height="10"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Data="M0.5,0.5L4.5178828,0.5 6.0620003,3.125 7.4936447,
                      0.5 11.5,0.5 11.5,1.5476431 8.7425003,6.1201854 11.5,
                      10.359666 11.5,11.5 7.4941902,11.5 6.0620003,8.8740005 
                      4.5172949,11.5 0.5,11.5 0.5,10.43379 3.3059995,
                      6.1201582 0.5,1.4676378 0.5,0.5z"
                    Fill="#E4FFFFFF"
                    Stretch="Fill"
                    Stroke="#FF535666" />
                </Button>
              </StackPanel>
              <Border
                Grid.Row="1"
                Margin="10,0,10,10"
                BorderBrush="Black"
                BorderThickness="1">
                <Grid>
                  <Rectangle Fill="White" />
                  <ContentPresenter Content="{TemplateBinding Content}" />
                </Grid>
              </Border>
            </Grid>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>
接下来,将ResourceDictionary添加到全局应用程序资源。同样,如果文件名不同,用文件名替换BaseResource.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/BaseResource.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
将样式添加到目标窗口

<Window
  ...
  Style="{StaticResource WindowStyle}">
有几件事

当没有内容时,设计师会弄乱样式。这可能是因为我在哪里放置了高度和宽度的TemplateBinding,但它在运行时看起来很好,所以我没有进一步弄乱它。我也没有为角点实现调整大小夹点,但是添加到模板中很容易

最后,我没有为最小化和最大化按钮绘制图标。我不擅长在混合中创建路径


希望能有所帮助。

我想在这里加上一条免责声明,我很快就把它拼凑起来了,主要是出于好奇。我没有做过太多的测试,除了在上面删除一些控件并运行它。它是有效的,但不应被视为f 完全完成。我也认为可能有更好的方法来做到这一点,但我认为这至少会给你一个良好的开端

向项目中添加新的ResourceDictionary,并添加以下XAML:

<ResourceDictionary
  x:Class="CustomWindow.BaseResource"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Style x:Key="WindowStyle" TargetType="{x:Type Window}">
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="WindowStyle" Value="None" />
    <Setter Property="ResizeMode" Value="NoResize" />
    <Setter Property="Background" Value="White" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Window}">
          <Border
            x:Name="WindowBorder"
            BorderBrush="Black"
            BorderThickness="1">
            <Border.Background>
              <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Offset="0" Color="White" />
                <GradientStop Offset="1" Color="#FFDADADA" />
              </LinearGradientBrush>
            </Border.Background>
            <Grid
              Width="{TemplateBinding Width}"
              Height="{TemplateBinding Height}"
              MinWidth="{TemplateBinding MinWidth}"
              MinHeight="{TemplateBinding MinHeight}"
              HorizontalAlignment="Left"
              VerticalAlignment="Top"
              Cursor="Arrow">
              <Grid.RowDefinitions>
                <RowDefinition Height="25" />
                <RowDefinition Height="*" />
              </Grid.RowDefinitions>
              <TextBlock
                Width="500"
                Height="23"
                Margin="11,2,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Text="{TemplateBinding Title}" />
              <Rectangle
                x:Name="TitleBar"
                Fill="Transparent"
                MouseDown="TitleBar_MouseDown" />
              <Rectangle
                Grid.RowSpan="2"
                Width="10"
                HorizontalAlignment="Left"
                Cursor="SizeWE"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Left" />
              <Rectangle
                Grid.RowSpan="2"
                Width="10"
                HorizontalAlignment="Right"
                Cursor="SizeWE"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Right" />
              <Rectangle
                Height="5"
                VerticalAlignment="Top"
                Cursor="SizeNS"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Top" />
              <Rectangle
                Grid.Row="1"
                Height="10"
                VerticalAlignment="Bottom"
                Cursor="SizeNS"
                Fill="Transparent"
                MouseDown="Border_MouseDown"
                Tag="Bottom" />
              <StackPanel
                Margin="10,0"
                HorizontalAlignment="Right"
                VerticalAlignment="Top"
                Orientation="Horizontal">
                <Button
                  x:Name="MinimizeButton"
                  Width="43"
                  Height="17"
                  Click="MinimizeButton_Click"
                  IsTabStop="False">
                  min
                </Button>
                <Button
                  x:Name="MaximizeButton"
                  Width="43"
                  Height="17"
                  Margin="5,0"
                  Click="MaximizeButton_Click"
                  IsTabStop="False">
                  max
                </Button>
                <Button
                  x:Name="CloseButton"
                  Width="43"
                  Height="17"
                  Click="CloseButton_Click"
                  IsTabStop="False">
                  <Path
                    Width="12"
                    Height="10"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Data="M0.5,0.5L4.5178828,0.5 6.0620003,3.125 7.4936447,
                      0.5 11.5,0.5 11.5,1.5476431 8.7425003,6.1201854 11.5,
                      10.359666 11.5,11.5 7.4941902,11.5 6.0620003,8.8740005 
                      4.5172949,11.5 0.5,11.5 0.5,10.43379 3.3059995,
                      6.1201582 0.5,1.4676378 0.5,0.5z"
                    Fill="#E4FFFFFF"
                    Stretch="Fill"
                    Stroke="#FF535666" />
                </Button>
              </StackPanel>
              <Border
                Grid.Row="1"
                Margin="10,0,10,10"
                BorderBrush="Black"
                BorderThickness="1">
                <Grid>
                  <Rectangle Fill="White" />
                  <ContentPresenter Content="{TemplateBinding Content}" />
                </Grid>
              </Border>
            </Grid>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>
接下来,将ResourceDictionary添加到全局应用程序资源。同样,如果文件名不同,用文件名替换BaseResource.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/BaseResource.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
将样式添加到目标窗口

<Window
  ...
  Style="{StaticResource WindowStyle}">
有几件事

当没有内容时,设计师会弄乱样式。这可能是因为我在哪里放置了高度和宽度的TemplateBinding,但它在运行时看起来很好,所以我没有进一步弄乱它。我也没有为角点实现调整大小夹点,但是添加到模板中很容易

最后,我没有为最小化和最大化按钮绘制图标。我不擅长在混合中创建路径

希望有帮助。

您可以使用完全控制窗口的chrome。下载内容包括一个示例

一个常见的误解是,你可以通过将WindowsStyle设置为None来提供自定义chrome。虽然这确实删除了默认的chrome,但它有几个缺点,包括您渲染的任何chrome都需要处理大小调整/移动,并且您的窗口将在用户任务栏上最大化,这是不可接受的行为。

您可以使用来完全控制窗口的chrome。下载内容包括一个示例


一个常见的误解是,你可以通过将WindowsStyle设置为None来提供自定义chrome。虽然这确实删除了默认的chrome,但它有几个缺点,包括您渲染的任何chrome都需要处理大小调整/移动,并且您的窗口将通过用户的任务栏最大化,这是不可接受的行为。

我刚刚尝试过,它只是将Windows 7设置为方形和透明,并使关闭按钮变小。它没有上图的外观。我只是尝试了一下,它只是把它做成了方形和透明的Windows7,并且把关闭按钮变小了。它没有上图的外观。谢谢你的回复,但是,我不能使用子窗口,因为我需要能够使用隐藏和其他功能。我只是想知道如何将此样式应用于窗口类。您必须修改窗口的模板本身。您可以使用上面的代码示例作为起点,但正如我所说的,您需要使窗口无边框,并将所有正常的window chrome内容连接在一起,等等。。。谢谢你的回复,但是,我不能使用子窗口,因为我需要能够使用隐藏和其他功能。我只是想知道如何将此样式应用于窗口类。您必须修改窗口的模板本身。您可以使用上面的代码示例作为起点,但正如我所说的,您需要使窗口无边框,并将所有正常的window chrome内容连接在一起,等等。。。你自己