mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-05 17:37:51 +08:00
1
This commit is contained in:
parent
a1db3807ff
commit
9ab836ff44
@ -1,271 +0,0 @@
|
||||
using CPF.Controls;
|
||||
using CPF.Drawing;
|
||||
using CPF.Shapes;
|
||||
using CPF.Styling;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Text;
|
||||
|
||||
namespace CPF.Toolkit.Dialogs
|
||||
{
|
||||
internal class DialogFrame : Control
|
||||
{
|
||||
public DialogFrame(IWindow window, UIElement content)
|
||||
{
|
||||
this.window = window;
|
||||
this.content = content;
|
||||
}
|
||||
IWindow window;
|
||||
/// <summary>
|
||||
/// 关联的窗体
|
||||
/// </summary>
|
||||
[NotCpfProperty]
|
||||
public IWindow Window
|
||||
{
|
||||
get { return window; }
|
||||
}
|
||||
|
||||
UIElement content;
|
||||
/// <summary>
|
||||
/// 窗体的内容
|
||||
/// </summary>
|
||||
[NotCpfProperty]
|
||||
public UIElement Content
|
||||
{
|
||||
get { return content; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 阴影宽度
|
||||
/// </summary>
|
||||
[Description("阴影宽度")]
|
||||
[UIPropertyMetadata((byte)5, UIPropertyOptions.AffectsMeasure)]
|
||||
public byte ShadowBlur
|
||||
{
|
||||
get { return GetValue<byte>(); }
|
||||
set { SetValue(value); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 显示标题栏图标
|
||||
/// </summary>
|
||||
[Description("显示标题栏图标"), PropertyMetadata(true)]
|
||||
public bool ShowIcon
|
||||
{
|
||||
get { return GetValue<bool>(); }
|
||||
set { SetValue(value); }
|
||||
}
|
||||
|
||||
protected override void InitializeComponent()
|
||||
{
|
||||
ViewFill color = "black";
|
||||
ViewFill hoverColor = "255,255,255,40";
|
||||
Width = "100%";
|
||||
Height = "100%";
|
||||
//窗体阴影
|
||||
var frame = Children.Add(new Border
|
||||
{
|
||||
Name = "frame",
|
||||
Width = "100%",
|
||||
Height = "100%",
|
||||
Background = "#fff",
|
||||
BorderType = BorderType.BorderStroke,
|
||||
BorderStroke = new Stroke(0),
|
||||
ShadowBlur = ShadowBlur,
|
||||
ShadowColor = Color.FromRgba(0, 0, 0, 150),
|
||||
Bindings =
|
||||
{
|
||||
{
|
||||
nameof(Border.ShadowBlur),
|
||||
nameof(IWindow.WindowState),
|
||||
window,
|
||||
BindingMode.OneWay,
|
||||
a => (WindowState)a == WindowState.Maximized||(WindowState)a == WindowState.FullScreen ? 0 : ShadowBlur
|
||||
},
|
||||
{
|
||||
nameof(Border.ShadowBlur),
|
||||
nameof(ShadowBlur),
|
||||
this,
|
||||
BindingMode.OneWay,
|
||||
a =>window.WindowState == WindowState.Maximized||window. WindowState == WindowState.FullScreen ? 0 : (byte)a
|
||||
},
|
||||
}
|
||||
});
|
||||
//用来裁剪内容,不然内容超出阴影
|
||||
var clip = new Decorator
|
||||
{
|
||||
Width = "100%",
|
||||
Height = "100%",
|
||||
ClipToBounds = true
|
||||
};
|
||||
frame.Child = clip;
|
||||
var grid = (Grid)(clip.Child = new Grid
|
||||
{
|
||||
Width = "100%",
|
||||
Height = "100%",
|
||||
ColumnDefinitions =
|
||||
{
|
||||
new ColumnDefinition()
|
||||
},
|
||||
RowDefinitions =
|
||||
{
|
||||
new RowDefinition
|
||||
{
|
||||
Height = "auto"
|
||||
},
|
||||
new RowDefinition
|
||||
{
|
||||
|
||||
}
|
||||
},
|
||||
});
|
||||
//标题栏和按钮
|
||||
grid.Children.Add(
|
||||
new Panel
|
||||
{
|
||||
Name = "caption",
|
||||
Background = "white",
|
||||
Width = "100%",
|
||||
Height = "30",
|
||||
Commands =
|
||||
{
|
||||
{
|
||||
nameof(MouseDown),
|
||||
nameof(IWindow.DragMove),
|
||||
Window
|
||||
}
|
||||
},
|
||||
Children =
|
||||
{
|
||||
new StackPanel
|
||||
{
|
||||
Name="titleBox",
|
||||
MarginLeft=0,
|
||||
Orientation= Orientation.Horizontal,
|
||||
Children=
|
||||
{
|
||||
new Picture
|
||||
{
|
||||
Name="icon",
|
||||
MarginLeft=5,
|
||||
Width=20,
|
||||
Height=20,
|
||||
Stretch= Stretch.Fill,
|
||||
Bindings=
|
||||
{
|
||||
{
|
||||
nameof(Picture.Source),
|
||||
nameof(window.Icon),
|
||||
window
|
||||
},
|
||||
{
|
||||
nameof(Visibility),
|
||||
nameof(window.Icon),
|
||||
window,
|
||||
BindingMode.OneWay,
|
||||
a=>a==null||!ShowIcon?Visibility.Collapsed:Visibility.Visible
|
||||
},
|
||||
{
|
||||
nameof(Visibility),
|
||||
nameof(ShowIcon),
|
||||
this,
|
||||
BindingMode.OneWay,
|
||||
(bool showIcon)=>!showIcon||window.Icon==null?Visibility.Collapsed:Visibility.Visible
|
||||
}
|
||||
}
|
||||
},
|
||||
new TextBlock
|
||||
{
|
||||
Name="title",
|
||||
MarginLeft=8,
|
||||
MarginTop=2,
|
||||
FontSize = 14,
|
||||
Foreground="Gray",
|
||||
Bindings=
|
||||
{
|
||||
{
|
||||
nameof(TextBlock.Text),
|
||||
nameof(IWindow.Title),
|
||||
Window
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
new StackPanel
|
||||
{
|
||||
Name="controlBox",
|
||||
MarginRight=0,
|
||||
Height = "100%",
|
||||
Orientation= Orientation.Horizontal,
|
||||
Children =
|
||||
{
|
||||
new SystemButton
|
||||
{
|
||||
Name="close",
|
||||
ToolTip="关闭",
|
||||
Width = 30,
|
||||
Height = "100%",
|
||||
Content=new Panel{
|
||||
Size=SizeField.Fill,
|
||||
Children =
|
||||
{
|
||||
new Line
|
||||
{
|
||||
MarginTop=8,
|
||||
MarginLeft=8,
|
||||
StartPoint = new Point(1, 1),
|
||||
EndPoint = new Point(14, 13),
|
||||
StrokeStyle = "2",
|
||||
IsAntiAlias=true,
|
||||
StrokeFill=color
|
||||
},
|
||||
new Line
|
||||
{
|
||||
MarginTop=8,
|
||||
MarginLeft=8,
|
||||
StartPoint = new Point(14, 1),
|
||||
EndPoint = new Point(1, 13),
|
||||
StrokeStyle = "2",
|
||||
IsAntiAlias=true,
|
||||
StrokeFill=color
|
||||
}
|
||||
}
|
||||
},
|
||||
Commands =
|
||||
{
|
||||
{
|
||||
nameof(Button.Click),
|
||||
(s,e)=>
|
||||
{
|
||||
//(e as MouseButtonEventArgs).Handled=true;
|
||||
Window.Close();
|
||||
}
|
||||
}
|
||||
},
|
||||
Triggers=
|
||||
{
|
||||
new Trigger(nameof(Panel.IsMouseOver), Relation.Me)
|
||||
{
|
||||
Setters =
|
||||
{
|
||||
{
|
||||
nameof(Panel.Background),
|
||||
hoverColor
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if (Content != null)
|
||||
{
|
||||
grid.Children.Add(Content, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -40,7 +40,7 @@ namespace CPF.Toolkit.Dialogs
|
||||
this.Width = "auto";
|
||||
this.Height = "auto";
|
||||
this.Background = null;
|
||||
this.Children.Add(new DialogFrame(this, new Grid
|
||||
var frame = this.Children.Add(new WindowFrame(this, new Grid
|
||||
{
|
||||
Size = SizeField.Fill,
|
||||
RowDefinitions =
|
||||
@ -116,6 +116,10 @@ namespace CPF.Toolkit.Dialogs
|
||||
}),
|
||||
}
|
||||
}));
|
||||
frame.ControlBoxStroke = "black";
|
||||
frame.CaptionBackgrund = "white";
|
||||
frame.CaptionForeground = "black";
|
||||
|
||||
textBox.TextChanged += TextBox_TextChanged;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user