仔细观察,不难发现上面的窗体大小是根据内容的多少自适应的。窗体自适应内容的的关键设置就是SizeToContent="WidthAndHeight",但为了达到更好的效果控制,还需要控制内容的大小范围,范围可以自己调整,看了样式代码你就了解了:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell" xmlns:local="clr-namespace:XLY.Framework.Controls" MaxboxEnable Title FontSize Margin新建一个WPF程序在Windows8下面就会出现左边的窗口边框,颜色取决于Windows主题我想在想创建一个右边那样的窗口,要么是窄边,要么没有边确定 Margin取消
上面不同消息类型的颜色资源:
后台C#代码
MessageBoxXxaml.xaml 的交互逻辑 MessageBoxX : WindowBase { 结果,用户点击确定Result=true; Result { get; private set; } Dictionary<string, Brush> _Brushes = new Dictionary<string, Brush>(); public MessageBoxX(EnumNotifyType type, string mes) { InitializeComponent(); this.txtMessage.Text = mes; //type btnCancel.Visibility = Visibility.Collapsed; this.SetForeground(type); switch (type) { case EnumNotifyType.Error: ; break; case EnumNotifyType.Warning: ; break; case EnumNotifyType.Info: ; break; case EnumNotifyType.Question: ; this.btnCancel.Visibility = Visibility.Visible; break; } } private void SetForeground(EnumNotifyType type) { ; if (!_Brushes.ContainsKey(key)) { var b = this.TryFindResource(key) as Brush; _Brushes.Add(key, b); } this.Foreground = _Brushes[key]; } private void btnOK_Click(object sender, RoutedEventArgs e) { this.Result = true; this.Close(); e.Handled = true; } private void btnCancel_Click(object sender, RoutedEventArgs e) { this.Result = false; this.Close(); e.Handled = true; } 提示错误消息 Error(string mes, Window owner = null) { Show(EnumNotifyType.Error, mes, owner); } 提示普通消息 Info(string mes, Window owner = null) { Show(EnumNotifyType.Info, mes, owner); } 提示警告消息 Warning(string mes, Window owner = null) { Show(EnumNotifyType.Warning, mes, owner); } 提示询问消息 Question(string mes, Window owner = null) { return Show(EnumNotifyType.Question, mes, owner); } 显示提示消息框, /// owner指定所属父窗体,默认参数值为null,则指定主窗体为父窗体。 Show(EnumNotifyType type, string mes, Window owner = null) { var res = true; Application.Current.Dispatcher.Invoke(new Action(() => { MessageBoxX nb = new MessageBoxX(type, mes) { Title = type.GetDescription() }; nb.Owner = owner ?? Application.Current.MainWindow; nb.ShowDialog(); res = nb.Result; })); return res; } 通知消息类型 EnumNotifyType { [Description()] Error, [Description()] Warning, [Description()] Info, [Description()] Question, } }
View Code
附录:参考引用
WPF自定义控件与样式(1)-矢量字体图标(iconfont)
WPF自定义控件与样式(2)-自定义按钮FButton
WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展
WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展
WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式
WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式
WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
WPF自定义控件与样式(10)-进度控件ProcessBar自定义样
WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现
WPF自定义控件与样式(12)-缩略图ThumbnailImage /gif动画图/图片列表
版权所有,文章来源:
个人能力有限,本文内容仅供学习、探讨,欢迎指正、交流。