WPF 顶部边框颜色设置

qq_30482825 2017-07-26 02:16:32

怎么设置成
...全文
2730 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Evil兔丶Sir 2017-07-27
  • 打赏
  • 举报
回复
鼠标选定Window窗口,属性设置就可以了
ilikeff8 2017-07-26
  • 打赏
  • 举报
回复

<base:BaseWindow x:Class="CANConfiger.MainWindow"
...
   Style="{StaticResource BaseWindowStyle}">
ilikeff8 2017-07-26
  • 打赏
  • 举报
回复
app.xaml

<Application x:Class="CANConfiger.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:CANConfiger"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
...
                <ResourceDictionary Source="Style/WindowStyle.xaml"/>
...
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
ilikeff8 2017-07-26
  • 打赏
  • 举报
回复
大体是这样的


<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<ControlTemplate TargetType="{x:Type Window}" x:Key="BaseWindowControlTemplateStyle">
<Border Background="White" BorderBrush="Black" BorderThickness="1">
<DockPanel LastChildFill="True">
<Grid VerticalAlignment="Top" HorizontalAlignment="Stretch" DockPanel.Dock="Top">
<StackPanel>
<DockPanel Name="dpTitle" Background="#4C9CFB" Height="60" >
<TextBlock Name="txtTitle" Text="{Binding MainTitle}" Style="{StaticResource AlignmentTitleStyle}" Margin="8,8"/>
<Button Name="btnClose" Content="X" Width="40" Height="40" DockPanel.Dock="Right" HorizontalAlignment="Right" Margin="3,0" />
</DockPanel>
<Image Source="/Resources/公司logo.png" HorizontalAlignment="Left" Height="60" />
</StackPanel>
</Grid>
<AdornerDecorator>
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" />
</AdornerDecorator>
</DockPanel>
</Border>
</ControlTemplate>

<Style TargetType="{x:Type Window}" x:Key="BaseWindowStyle">
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="WindowStyle" Value="None"/>
<Setter Property="Topmost" Value="False"/>
<Setter Property="Template" Value="{StaticResource BaseWindowControlTemplateStyle}"/>
</Style>
</ResourceDictionary>



public class BaseWindow : Window
{
bool isMaxed = false;

public BaseWindow()
{
this.Loaded += BaseWindow_Loaded;
}

private void BaseWindow_Loaded(object sender, RoutedEventArgs e)
{
if (!DesignerProperties.GetIsInDesignMode(this))
{
ControlTemplate controlTemplate = App.Current.Resources["BaseWindowControlTemplateStyle"] as ControlTemplate;

if (controlTemplate != null)
{
DockPanel dp = controlTemplate.FindName("dpTitle", this) as DockPanel;
dp.MouseMove += dp_MouseMove;
dp.MouseDown += dp_MouseDown;

Button btnClose = controlTemplate.FindName("btnClose", this) as Button;
btnClose.Click += btnClose_Click;
}

MaxWindow();
}
...


最后,让你的窗口继承 BaseWindow

<base:BaseWindow x:Class=...



public partial class MainWindow : BaseWindow
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = new MainViewModel();
...


viewmodel里

public class MainViewModel : INotifyPropertyChanged
{
public string MainTitle { get { return "XXX v1.0 "; } }
...



exception92 2017-07-26
  • 打赏
  • 举报
回复
引用 2 楼 qq_30482825 的回复:
这里设置无效
borderbrush 设置的是边框,不是背景。 你所指的是修改标题栏的背景色。 最好使用dockPanel 布局标题栏,也就是包含image,文字,关闭按钮等控件。
qq_30482825 2017-07-26
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
最简单的 自定义标题栏部分。


这里设置无效
exception92 2017-07-26
  • 打赏
  • 举报
回复
最简单的 自定义标题栏部分。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧