网站提升流量,wordpress文章网格,网站关键词扩展,台州椒江做网站目录 
一.常用属性介绍 
二、 程序退出方式 
三、布局样式 
3.1 Panel的附加属性ZIndex 
3.2 Grid(网格)布局 
3.3 UniformGrid#xff08;均分布局#xff09; 
3.4 StackPanel#xff08;堆积面板#xff09; 
3.5 WrapPanel#xff08;换行面板#xff09;  
3.6  Doc…目录 
一.常用属性介绍 
二、 程序退出方式 
三、布局样式 
3.1 Panel的附加属性ZIndex 
3.2 Grid(网格)布局 
3.3 UniformGrid均分布局 
3.4 StackPanel堆积面板 
3.5 WrapPanel换行面板  
3.6  DockPanel停靠面板 
3.7 Canvas画布布局  3.8 个性化Border 
3.9  GridSplitter分割窗口 四、内容控件 
4.1 Control类 4.2 Button按钮 4.3 CheckBox复选框 4.4 RadioButton单选框 4.5 RepeatButton重复按钮 4.6 Label控件 
4.6.1  Label直接显示文本 
4.6.2 label和访问修饰符   4.6.3 使用控件作为Label的内容 
4.7  TextBox 
4.8 PasswordBox密码框 
4.9 RichTextBox富文本控件 4.9.1 获取富文本内容 
4.9.2 动态创建富文本内容 4.9.3 加载文件内容到富文本 
4.10 ToolTip提示工具 
4.10.1 自定义ToolTip内容 4.11 Popup弹出窗口 4.12 Image图片 
4.12.1 圆形图片 4.13 GroupBox分组容器 4.13.1 基本使用 4.13.2 自定义header属性 
4.14 ScrollViewer 视图滚动控件 
4.15 Slider 滑块 
4.16 ProgressBar进度条 
4.17 Calendar日历控件 
4.18 DatePicker日期选择控件 一.常用属性介绍 Icon: 指定窗口的图标 Title: 窗口标题 WindowStyle控制界面边框样式 None-无边框   窗口无法拖动 SingleBorderWindow-单边框默认ThreeDBorderWindow-3D边框 ToolWindow-工具箱窗口只有标题和删除界面图标 ResizeMode指定窗口大小调节样式 NoResize不能调节、并且没有窗口最大最小按钮CanMinimize不能调节有最小化按钮CanResize可调节默认CanResizeWithGrip: 可根据网格调节 Topmost 调节窗口前后顺序为true时窗口位于最前都为true时根据顺序决定Height、Width、MaxHeight、MaxWidth高度、宽度、最大高度、最大宽度SizeToContent表示窗体大小决定方式 Manual手工决定可以自由改变Width宽度决定Height高度决定WidthAndHeight内容决定 Visibility窗口可见性 Visible可见Hidden隐藏Collapsed折叠 WindowState 窗口状态 Normal正常Maximized最大化Minimized最小化 WindowStartupLocation窗口启动时位置 CenterScreen正中间 二、 程序退出方式 
close()关闭当前窗口 
private void Button_Close(object sender, RoutedEventArgs e)
{this.Close();
} 
Application.Current.Shutdown()关闭UI但后台进程没有关闭只到所有后台进程关闭才关闭 
private void Button_Exit(object sender, RoutedEventArgs e)
{Application.Current.Shutdown();
} Environment.Exit(0)强制退出不会执行finally但是会进行资源清理 
private void Button_Exit(object sender, RoutedEventArgs e)
{Environment.Exit(0);
} Process.GetCurrentProcess().Kill()强制退出不会进行资源清理 
private void Button_Exit(object sender, RoutedEventArgs e)
{Process.GetCurrentProcess().Kill();
} 
三、布局样式 
3.1 Panel的附加属性ZIndex 当我们在Grid中定义两个Button的时候我们可以看到只会显示出按钮2因为两个按钮重叠在了一起那么如果我们要自由选择显示哪一个按钮改怎么实现呢 我们在Button中加上Panel的附加属性ZIndex后就可以根据值的大小选择需要显示的内容,比如下面的代码展示的效果则是按钮1被显示 
GridButton Panel.ZIndex1 Content按钮1 Height30 Width200 /Button Panel.ZIndex0 Content按钮2 Height30 Width200 /
/Grid 
3.2 Grid(网格)布局 
定义行和列 Grid ShowGridLinesTrue!--两行--Grid.RowDefinitionsRowDefinition /RowDefinition //Grid.RowDefinitions!--两列--Grid.ColumnDefinitionsColumnDefinition /ColumnDefinition //Grid.ColumnDefinitions!--不写默认是第一行 or 第一列--TextBlock Text文本1 /!--Grid.Row: 哪一行 Grid.Column那一列--TextBlock Grid.Row1 Grid.Column0 Text文本2 /TextBlock Grid.Row0 Grid.Column1 Text文本3 /TextBlock Grid.Row1 Grid.Column1 Text文本4 //Grid 合并行和合并列 
Grid ShowGridLinesTrue!--两行--Grid.RowDefinitionsRowDefinition /RowDefinition //Grid.RowDefinitions!--两列--Grid.ColumnDefinitionsColumnDefinition /ColumnDefinition //Grid.ColumnDefinitions!--Grid.ColumnSpan合并列  Grid.RowSpan合并行--TextBlock Grid.ColumnSpan2 Text合并列 VerticalAlignmentCenter HorizontalAlignmentCenter /TextBlock Grid.RowSpan2 Text合并行 VerticalAlignmentCenter HorizontalAlignmentCenter /
/Grid 设置行和列高度的几种方式  1. 给具体的值 
Grid.RowDefinitionsRowDefinition Height120 /RowDefinition /
/Grid.RowDefinitions 2. 根据内容大小自动变换 
Grid.RowDefinitionsRowDefinition HeightAuto /RowDefinition /
/Grid.RowDefinitions 3. 设置比例 
如下表示将整个网格设置为8等份第一行占3份第二行占五份 Grid.RowDefinitionsRowDefinition Height3* /RowDefinition Height5* //Grid.RowDefinitions 
3.3 UniformGrid均分布局 UniformGrid与Grid网格布局十分相似只是UniformGrid的每个单元格面积都是相等的单元格会平分整个UniformGrid。 
定义一个两行两列的单元格 定义方式特别简单只需要在UniformGrid中设置Rows和Columns即可 FirstColumn属性的使用 FirstColumn代表第一行我要空多少格被挤掉的格子会在布局外部显示但是运行项目的时候是看不到的 3.4 StackPanel堆积面板 StackPanel用于水平或者垂直堆叠子元素 
StackPanelButton Contentbutton01 /Button Contentbutton01 /Button Contentbutton01 /Button Contentbutton01 /Button Contentbutton01 /
/StackPanel 设置OrientationHorizontal后 3.5 WrapPanel换行面板  当一行或者一列内容放不下时自动切换到另一行或另一列提供了三个参数Orientation-设置排列方式ItemWidth-设置子项宽度ItemHeight-设置子项高度 
3.6  DockPanel停靠面板 3.7 Canvas画布布局  3.8 个性化Border 
Canvas!--BorderThickness边框厚度,可以设置为BorderThickness左,上,右,下 BorderBrush边框颜色 CornerRadius边框圆角--Border Canvas.Left20 Canvas.Top20 BorderThickness1 Width100 Height30 BorderBrushredTextBlock Textbutton VerticalAlignmentCenter HorizontalAlignmentCenter //BorderBorder Canvas.Left20 Canvas.Top80 BorderThickness1 Width100 Height30 BorderBrushBlue CornerRadius10 BackgroundCoralTextBlock Textbutton VerticalAlignmentCenter HorizontalAlignmentCenter //Border!--需要注意设置圆的时候长和宽需要一样并且CornerRadius  Width/2 or Height/2 --Border Canvas.Left20 Canvas.Top150 BorderThickness1 Width100 Height100BorderBrushGreen BackgroundYellow CornerRadius50TextBlock Textbutton VerticalAlignmentCenter HorizontalAlignmentCenter //Border
/Canvas 3.9  GridSplitter分割窗口 GridSplitter用于分割窗口的布局可以通过鼠标实现左右或者上下的拖动 
使用注意事项 该属性必须在Grid布局中使用。如果要实现左右拖动改变窗口的大小需要设置HorizontalAlignmentCenter如果要实现上下拖动改变窗口的大小需要设置VerticalAlignmentCenter默认是实时查看改变大小当设置ShowsPreviewTrue时鼠标取消拖动后才会显示。 GridGrid.ColumnDefinitionsColumnDefinition /ColumnDefinition WidthAuto /ColumnDefinition //Grid.ColumnDefinitionsBorder BackgroundAqua!--TextWrappingWrap: 自动换行--TextBlock TextWrappingWrap1111111111111111111111111111111111111111111111/TextBlock/BorderGridSplitter Grid.Column1 Width5 HorizontalAlignmentCenter ShowsPreviewTrue /Border Grid.Column2 BackgroundYellowTextBlock TextWrappingWrap2222222222222222222222222222222222222222222222222222222/TextBlock/Border
/Grid 四、内容控件 
4.1 Control类 Control类是很多控件的基类而内容控件与布局控件的不同在于布局控件专注于界面设计内容控件专注于数据。 Control在界面上不会有任何的显示但是Control提供了一个控件模板Control.Template几乎所有子类对Control.Template都进行了各自的实现所以只有继承了Control的子类才会在界面上显示。 
ControlControl.TemplateControlTemplate TargetTypeControlBorder Width200 Height200 BackgroundYellow CornerRadius100TextBlock Textbutton VerticalAlignmentCenter HorizontalAlignmentCenter/TextBlock/Border/ControlTemplate/Control.Template
/Control 4.2 Button按钮 
Button按钮自带的有三个属性 IsDefault表示该Button是一个默认按钮可以直接通过Enter键调用IsCancel表示该Button是一个取消按钮可以通过Esc键直接调用IsDefaulted表示是否在用户按下Enter后才激活的按钮 Button自定义样式 
CanvasButton Width120 Height30 Content圆角按钮 Canvas.Left50 Canvas.Top50Button.TemplateControlTemplate TargetTypeButton!--TemplateBinding BorderBrush: 获取边框默认的颜色--Border CornerRadius15 BorderBrush{TemplateBinding BorderBrush} BorderThickness1 BackgroundYellowGridGrid.ColumnDefinitionsColumnDefinition WidthAuto /ColumnDefinition //Grid.ColumnDefinitionsImage SourceImages/csharp.png Width60 Height20 /!--ContentPresenter自动获取Button中content的值--ContentPresenter Grid.Column1 VerticalAlignmentCenter HorizontalAlignmentCenter //Grid/Border/ControlTemplate/Button.Template/Button
/Canvas 4.3 CheckBox复选框 我们在StackPanel布局中定义三个复选框为每个复选框绑定OnCheck检查事件判断该复选框是被被选择然后定义一个Button绑定事件Show 
StackPanel x:NameSelectTextBlock Text你知道的编程语言 Margin5,5,0,0 /CheckBox ContentC语言 CheckedOnCheck Margin5,5,0,0 /CheckBox ContentC语言 CheckedOnCheck Margin5,5,0,0 /CheckBox ContentC#语言 CheckedOnCheck Margin5,5,0,0 /Button Content查看选择 Width100 HorizontalAlignmentLeft Margin5,5,0,0 ClickShow /
/StackPanel 
private void Show(object sender, RoutedEventArgs e)
{StringBuilder show  new StringBuilder();// 遍历Select下的所有子控件Select是我在xaml中给Pannel布局定义的名字foreach (var item in Select.Children){if (item is CheckBox){// 判断是否选中if ((item as CheckBox).IsChecked  true){show.Append((item as CheckBox).Content   );}}}if (show.Length  0){MessageBox.Show(show.ToString());}
}private void OnCheck(object sender, RoutedEventArgs e)
{int total  0;foreach (var item in Select.Children){if (item is CheckBox){total  (item as CheckBox).IsChecked  true? 1 : 0;}}// 最多选择两个if (total  2){// sender: 是当前选中的CheckBoxvar cbx  sender as CheckBox;if (cbx.IsChecked  true) // 判断是否是选中状态{cbx.IsChecked  false;MessageBox.Show(最多只能选两个);}}
} 4.4 RadioButton单选框 
StackPanelStackPanel OrientationHorizontal x:NameSelectTextBlock Text性别 Margin5,0,0,0 /!--GroupName用于对单选框进行分组--RadioButton Content男 GroupNamesex Margin10,0,0,0 /RadioButton Content女 GroupNamesex Margin10,0,0,0 //StackPanelButton Content查看 Width100 HorizontalAlignmentLeft Margin5,20,0,0 ClickShow /
/StackPanel 
private void Show(object sender, RoutedEventArgs e)
{foreach (var sex in Select.Children){if (sex is RadioButton { IsChecked: true } str){MessageBox.Show(str.Content.ToString());}}
} 4.5 RepeatButton重复按钮 这个按钮事件是当我们按下鼠标后会一直重复执行直到我们松开鼠标键其中具有两个重要的属性: Delay点击后隔多久开始重复执行Interval重复执行函数的间隔时间 注意想要打开控制台查看输出效果需要设置鼠标右键点击你的解决方案选择【属性】-- 输出类型修改为控制台应用程序 GridRepeatButton Width50 Height30 Contentbutton ClickrepeatButton Delay3000 Interval2000 /
/Grid 
private int total  0;
private void repeatButton(object sender, RoutedEventArgs e)
{Console.WriteLine($点击了{total}次当前时间{DateTime.Now});
} 4.6 Label控件 
4.6.1  Label直接显示文本 当我们在Label中添加Content时Label实际上会在内部创建一个TextBlock来显示我们的内容但是Label会默认为其加上边距 
StackPanelLabel Contenthello /
/StackPanel 4.6.2 label和访问修饰符   当我们设置了访问修饰符后程序运行时我们按住【Alt】键被我们修饰的子元符会高亮显示通过【Alt】所设置的字符可以将焦点切换到对应的Label中。 
StackPanel!--_后面的字符就是被我们修饰的字符可以放在任何字符的前面--Label Margin20,0,0,0 Content_Name Target{Binding ElementNametxtName} /TextBox x:NametxtName Margin20,0,50,0 /Label Margin20,0,0,0 ContentS_ex Target{Binding ElementNametxtSex} /TextBox x:NametxtSex Margin20,0,50,0 /
/StackPanel 此时运行项目点击【Alt】,会将我们修饰的字符通过下划线的方式进行显示如果我们再按“e”,焦点会在Sex中。 4.6.3 使用控件作为Label的内容 
StackPanel!--Binding ElementNametxtName绑定需要被聚焦的文本框--Label Target{Binding ElementNametxtName}StackPanel OrientationHorizontal Margin50,0Image SourceImages/csharp.png Width20 Height20 /!--AccessText才可以定义访问键--AccessText Text_CSharp VerticalAlignmentCenter //StackPanel/LabelTextBox x:NametxtName Margin50,0 /
/StackPanel 4.7  TextBox 在TextBox中具有许多的属性下面我列举一些比较常用的 
MinLines最小可见行数MaxLines最大可见行数Text文本内容CharacterCasing是否转换成大小写VerticalScrollBarVisibility是否显示拉条MaxLength一行的最大字符长度TextAlignment设置文本水平方向位置VerticalContentAlignment设置文本垂直方向位置TextWrapping是否自动换行 
4.8 PasswordBox密码框 PasswordChar改变密码框中内容默认显示符号PasswordChanged 密码改变时执行事件 StackPanel Margin20PasswordBox /
/StackPanel 
4.9 RichTextBox富文本控件 RichTextBox可用于显示输入和操作格式文本。可以实现TextBox的全部功能外还提供了富文本的显示功能同时我们可以对文本内容进行编辑。 
需要注意FlowDocumentFlowDocument RichTextBoxRichTextBox唯一支持的子元素是FlowDocument RichTextBox。 
StackPanelRichTextBox x:NamecontentFlowDocumentParagraphRunParagraph 1/Run/ParagraphParagraphRunParagraph 2/Run/ParagraphParagraphRunParagraph 3/Run/Paragraph/FlowDocument/RichTextBox
/StackPanel 4.9.1 获取富文本内容 给RichTextBox设置Name,通过button可以获取富文本的内容 
private void getContent(object sender, RoutedEventArgs e)
{// 获取文本框内容content是我们给RichTextBox设置的NameTextRange tr  new TextRange(content.Document.ContentStart, content.Document.ContentEnd);MessageBox.Show(tr.Text);
} 4.9.2 动态创建富文本内容 
StackPanelRichTextBox x:Namecontent/RichTextBox
/StackPanel 
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();// 创建FlowDocument对象FlowDocument flowDocument  new FlowDocument();content.Document  flowDocument;// 创建段落Paragraph paragraph  new Paragraph();paragraph.Foreground  Brushes.Blue;paragraph.Inlines.Add(hello);Paragraph paragraph2  new Paragraph();paragraph2.Foreground  Brushes.Green;paragraph2.Inlines.Add(world);// 将段落添加到文档中flowDocument.Blocks.Add(paragraph);flowDocument.Blocks.Add(paragraph2);}
} 4.9.3 加载文件内容到富文本 可以设置一个Button,然后给Button绑定事件可以实现将文件中的内容显示出来 
private void Upload(object sender, RoutedEventArgs e)
{OpenFileDialog file  new OpenFileDialog();file.Filter  Text files (*.txt)|*.txt|All files (*.*)|*.*;if (file.ShowDialog()  true){TextRange txt  new TextRange(content.Document.ContentStart, content.Document.ContentEnd);using var stream  new FileStream(file.FileName, FileMode.Open, FileAccess.Read);txt.Load(stream, DataFormats.Text);}
} 
4.10 ToolTip提示工具 ToolTip可以显示所有 任何类型比如图像字符 其他控件等   
当我们将鼠标放在Button上时会显示出设定好的文字“hello”  
StackPanelButton Content鼠标放过来 ToolTiphello /
/StackPanel 
4.10.1 自定义ToolTip内容 
StackPanelButton Width100 Content鼠标放过来Button.ToolTipStackPanelTextBlockhello/TextBlockBorder Width100 Height100Image SourceImages/csharp.png //Border/StackPanel/Button.ToolTip/Button
/StackPanel 4.11 Popup弹出窗口 
AllowsTransparency控件是否包含透明内容PopupAnimation控件打开或关闭时的动画效果。None没有效果Fade:逐渐显示或淡出Slide向上向下划入Scroll滚动效果PlacementRectangle弹窗打开的位置PlacementTarget在那个控件身边打开StaysOpen默认为true表示弹窗打开后如果失去焦点是否继续显示IsOpen设置弹窗是否显示 
小案例如下 
StackPanelTextBox x:NameMenu Width100 Margin0,20 GotFocusgot LostFocuslost /Popup x:NamemyPopup PlacementTarget{Binding ElementNameMenu}Width{Binding ElementNameMenu,PathActualWidth} ListBox x:Namelist SelectionChangedListBoxSelectListBoxItem Contentitem1 /ListBoxItem Contentitem2 /ListBoxItem Contentitem3 /ListBoxItem Contentitem4 //ListBox/Popup
/StackPanel 
private void got(object sender, RoutedEventArgs e)
{myPopup.IsOpen  true;
}private void lost(object sender, RoutedEventArgs e)
{myPopup.IsOpen  false;
}private void ListBoxSelect(object sender, SelectionChangedEventArgs e)
{Menu.Text  (list.SelectedItem as ListBoxItem).Content.ToString();
} 4.12 Image图片 
Source图片来源StretchDirection 图片缩放条件。 UpOnly仅在小于父级时缩放DownOnly仅在大于父级时缩放Both兼容前两者 Stretch 图片缩放模式。 None保持原始大小Fill调整内容大小以填充目标尺寸Uniform保持纵横比基础上缩放UniformToFill保持纵横比基础上缩放还具有裁剪功能  
4.12.1 圆形图片 
StackPanelEllipse Width200 Height200Ellipse.FillImageBrush ImageSourceImages/csharp.png //Ellipse.Fill/Ellipse
/StackPanel 4.13 GroupBox分组容器 4.13.1 基本使用 
Grid Width400 Margin0,40!--定义行--Grid.RowDefinitionsRowDefinition /RowDefinition //Grid.RowDefinitionsGroupBox Header基本信息!--定义第一行内部--GridGrid.RowDefinitionsRowDefinition /RowDefinition //Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition WidthAuto /ColumnDefinition //Grid.ColumnDefinitionsTextBlock Text姓名 VerticalAlignmentCenter Margin2,0 /TextBox Grid.Column1 Width200 Height20 HorizontalAlignmentLeft Margin5,0 /TextBlock Grid.Row1 Text性别 VerticalAlignmentCenter Margin2,0 /WrapPanel Grid.Row1 Grid.Column1 Width200 Height30 HorizontalAlignmentLeftRadioButton Content男 GroupNamesex Margin7 /RadioButton Content女 GroupNamesex Margin7 //WrapPanel/Grid/GroupBox
/Grid 4.13.2 自定义header属性 
GroupBox.HeaderStackPanel OrientationHorizontalImage SourceImages/csharp.png Width20 /TextBlock Text基本信息 VerticalAlignmentCenter Margin5,0 //StackPanel
/GroupBox.Header 4.14 ScrollViewer 视图滚动控件 当在一个固定大小的布局格子中的内容查出格子范围时可以使用ScrollViewer 
ScrollViewer!--定义第一行内部--GridGrid.RowDefinitionsRowDefinition Height200 /RowDefinition //Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition WidthAuto /ColumnDefinition //Grid.ColumnDefinitionsTextBlock Text姓名 VerticalAlignmentCenter Margin2,0 /TextBox Grid.Column1 Width200 Height20 HorizontalAlignmentLeft Margin5,0 /TextBlock Grid.Row1 Text性别 VerticalAlignmentCenter Margin2,0 /WrapPanel Grid.Row1 Grid.Column1 Width200 Height30 HorizontalAlignmentLeftRadioButton Content男 GroupNamesex Margin7 /RadioButton Content女 GroupNamesex Margin7 //WrapPanel/Grid
/ScrollViewer 4.15 Slider 滑块 案例通过Slider控制图片的透明度 
Grid Width400 Margin0,40Grid.RowDefinitionsRowDefinition /RowDefinition HeightAuto //Grid.RowDefinitionsImage SourceImages/csharp.png Width200 Height200 Opacity{Binding ElementNameslider, PathValue}/!--Value:默认透明度 Maximum最大值--Slider x:Nameslider Value0.3 Grid.Row1 Maximum1 /
/Grid 4.16 ProgressBar进度条 
StackPanel VerticalAlignmentCenterProgressBar x:Nameprogress Width200 Height10 Maximum100 /TextBlock x:Nametxt VerticalAlignmentCenter HorizontalAlignmentCenter0%/TextBlock
/StackPanel 
4.17 Calendar日历控件 
4.18 DatePicker日期选择控件