mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-06-28 13:34:09 +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.Width = "auto";
|
||||||
this.Height = "auto";
|
this.Height = "auto";
|
||||||
this.Background = null;
|
this.Background = null;
|
||||||
this.Children.Add(new DialogFrame(this, new Grid
|
var frame = this.Children.Add(new WindowFrame(this, new Grid
|
||||||
{
|
{
|
||||||
Size = SizeField.Fill,
|
Size = SizeField.Fill,
|
||||||
RowDefinitions =
|
RowDefinitions =
|
||||||
@ -116,6 +116,10 @@ namespace CPF.Toolkit.Dialogs
|
|||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
frame.ControlBoxStroke = "black";
|
||||||
|
frame.CaptionBackgrund = "white";
|
||||||
|
frame.CaptionForeground = "black";
|
||||||
|
|
||||||
textBox.TextChanged += TextBox_TextChanged;
|
textBox.TextChanged += TextBox_TextChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user