Can i set the window border color in WPF?

后端 未结 2 1022
臣服心动
臣服心动 2021-01-31 10:57

May i know how to set the window style or color? The image below is my WPF \"enter

I want

相关标签:
2条回答
  • 2021-01-31 11:45

    As far as I can remember (It is more than 4 years ago), you can create a style to use with a WPF window.

    This is a sample window Style:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
        <Style x:Key="MainWindow" 
               TargetType="{x:Type Window}"> 
            <Setter Property="Foreground" 
                    Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" /> 
            <Setter Property="Template"> 
                <Setter.Value> 
                    <ControlTemplate TargetType="{x:Type Window}"> 
                        <Grid> 
                            <Border x:Name="MainBorder" 
                                    BorderBrush="{DynamicResource MainWindowBorderBrush}" 
                                    BorderThickness="1" 
                                    CornerRadius="2" 
                                    Background="{DynamicResource MainWindowBackgroundBrush}"> 
                                <DockPanel LastChildFill="True"> 
                                    <Rectangle x:Name="PART_LEFT_BORDER" 
                                               Width="2" 
                                               Cursor="SizeWE"> 
                                        <Rectangle.Fill> 
                                            <SolidColorBrush Color="Transparent" /> 
                                        </Rectangle.Fill> 
                                    </Rectangle> 
                                    <Rectangle x:Name="PART_RIGHT_BORDER" 
                                               Cursor="SizeWE" 
                                               Width="2" 
                                               DockPanel.Dock="Right"> 
                                        <Rectangle.Fill> 
                                            <SolidColorBrush Color="Transparent" /> 
                                        </Rectangle.Fill> 
                                    </Rectangle> 
                                    <Rectangle x:Name="PART_TOP_BORDER" 
                                               Cursor="SizeNS" 
                                               DockPanel.Dock="Top" 
                                               Height="2"> 
                                        <Rectangle.Fill> 
                                            <SolidColorBrush Color="Transparent" /> 
                                        </Rectangle.Fill> 
                                    </Rectangle> 
                                    <Rectangle x:Name="PART_BOTTOM_BORDER" 
                                               Cursor="SizeNS" 
                                               Height="2" 
                                               DockPanel.Dock="Bottom"> 
                                        <Rectangle.Fill> 
                                            <SolidColorBrush Color="Transparent" /> 
                                        </Rectangle.Fill> 
                                    </Rectangle> 
                                    <Border x:Name="PART_TITLEBAR" 
                                            Margin="2,0,2,2" 
                                            Height="40" 
                                            DockPanel.Dock="Top" 
                                            CornerRadius="2" 
                                            Background="Transparent"> 
                                        <DockPanel LastChildFill="False"> 
                                            <TextBlock Margin="8,0,0,4" 
                                                       VerticalAlignment="Center" 
                                                       FontStretch="UltraExpanded" 
                                                       Foreground="Black" 
                                                       TextTrimming="CharacterEllipsis" 
                                                       TextWrapping="NoWrap" 
                                                       Text="{TemplateBinding Title}" 
                                                       FontSize="16" /> 
                                            <Button x:Name="PART_CLOSE" 
                                                    DockPanel.Dock="Right" 
                                                    Style="{DynamicResource FlatButton}" 
                                                    VerticalAlignment="Center" 
                                                    Margin="0,0,4,0"> 
                                                <Image Source="/MixModes.Synergy.Resources;
                            component/Resources/Close.png" 
                                                       Stretch="None" 
                                                       Margin="4" /> 
                                            </Button> 
                                            <Button x:Name="PART_MAXIMIZE_RESTORE" 
                                                    DockPanel.Dock="Right" 
                                                    HorizontalAlignment="Center" 
                                                    VerticalAlignment="Center" 
                                                    Style="{DynamicResource FlatButton}"> 
                                                <Image x:Name="MaximizeRestoreImage" 
                                                       Source="/MixModes.Synergy.Resources;
                            component/Resources/Restore.png" 
                                                       Stretch="None" 
                                                       Margin="4" /> 
                                            </Button> 
                                            <Button x:Name="PART_MINIMIZE" 
                                                    HorizontalAlignment="Center" 
                                                    Style="{DynamicResource FlatButton}" 
                                                    VerticalAlignment="Center" 
                                                    DockPanel.Dock="Right"> 
                                                <Image Margin="4" 
                                                       Source="/MixModes.Synergy.
                            Resources;component/Resources/
                            Minimize.png" 
                                                       Stretch="None" /> 
                                            </Button> 
                                        </DockPanel> 
                                    </Border>
    
                                    <!-- Title bar separator--> 
                                    <Border Height="1" 
                                            DockPanel.Dock="Top" 
                                            Background="{DynamicResource 
                        MainWindowTitleBarSeparator}" />
    
                                    <!-- Actual Window Content --> 
                                    <AdornerDecorator DockPanel.Dock="Bottom"> 
                                        <ContentPresenter /> 
                                    </AdornerDecorator> 
                                </DockPanel> 
                            </Border> 
                        </Grid> 
                        <ControlTemplate.Triggers>                        
                            <DataTrigger Binding="{Binding RelativeSource=
                    {RelativeSource Self}, Path=Maximized}" 
                                         Value="False"> 
                                <Setter TargetName="MaximizeRestoreImage" 
                                        Property="Source" 
                                        Value="/MixModes.Synergy.Resources;
                    component/Resources/Maximize.png" /> 
                            </DataTrigger> 
                        </ControlTemplate.Triggers> 
                    </ControlTemplate> 
                </Setter.Value> 
            </Setter> 
        </Style> 
    </ResourceDictionary>
    

    And the result will look like this:

    http://www.codeproject.com/KB/WPF/CustomWPFWindow/8.png

    Read more on Create Custom Windows in WPF with Ease

    0 讨论(0)
  • 2021-01-31 11:45

    You can use the XAML below to achieve rounded corner windows in WPF, the problem with this approach is you'll have to implement your own buttons for Minimize,Maximize and Close.

    Fortunately there is a library on code plex which does all this for you

    <Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        AllowsTransparency="True"
        WindowStyle="None"
        Padding="0"
        WindowStartupLocation="CenterScreen" Height="200" Width="200" >
        <Border BorderBrush="Blue" BorderThickness="2" CornerRadius="6" >
        </Border>
    </Window>
    
    0 讨论(0)
提交回复
热议问题