WPF UI 设计需要自动适应窗体大小,那么Grid是非常好的布局控件。

首先看看这个控件的布局:

这个Grid是3列5行的布局, Grid里面可以包含任何子元素,因此是所有布局的首选, 还有一些其他的空间如DockPanel,Canvas,StackPanel,WarpPanel也是非常好的布局控件.

先看如下代码:

        <Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions> <Grid.RowDefinitions>
<RowDefinition Height=""/>
<RowDefinition Height=""/>
<RowDefinition Height="*"/>
<RowDefinition Height=""/>
<RowDefinition Height=""/>
</Grid.RowDefinitions>

不多说,上UI全部的代码:

    <Grid Background="#989898">

        <Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions> <Grid.RowDefinitions>
<RowDefinition Height=""/>
<RowDefinition Height=""/>
<RowDefinition Height="*"/>
<RowDefinition Height=""/>
<RowDefinition Height=""/>
</Grid.RowDefinitions> <Border Background="#989898" BorderBrush="#989898" BorderThickness="2,0,2,2" Margin="0,0,5.643,0" Height="24.75" VerticalAlignment="Top" Grid.ColumnSpan="" HorizontalAlignment="Right" Width="">
<WrapPanel>
<Button Height="22.75" Name="btn_Top" Width="" Content="T" Margin="0,0,1,0" HorizontalAlignment="Stretch" VerticalAlignment="Top"/>
<Button Height="22.75" Name="btn_Min" Width="" Content="-" Margin="0,0,1,0" HorizontalAlignment="Stretch" VerticalAlignment="Top"/>
<Button Height="22.75" Name="btn_Close" Width="" Content="X" Margin="0,0,1,0" HorizontalAlignment="Stretch" VerticalAlignment="Top"/>
</WrapPanel>
</Border> <DockPanel Grid.Row="" Grid.ColumnSpan="" Margin="7,0" Background="#989898">
<Label Height="" Name="lblForder" Margin="7,0,0,0">Forder Path:</Label>
<Button Height="" Name="btn_Broswer" DockPanel.Dock="Right" Padding="8,3" Margin="7,0">Broswer</Button>
<TextBlock Height="" Name="tbk_ForderPath" Background="White" ForceCursor="True" Foreground="Red"/>
</DockPanel> <GroupBox Grid.Row="" Grid.ColumnSpan="" Margin="">
<GroupBox.Header>
<WrapPanel>
<TextBlock Text="{Binding ElementName= listbox1, Path=Items.Count}"/>
<TextBlock Padding="2,0,0,0"> file(s) found.</TextBlock>
</WrapPanel>
</GroupBox.Header>
<ListBox Name="listbox1" SelectionMode="Single">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Name="cmi2" Header="Delete selected files" />
<MenuItem Name="cmi3" Header="Clear"/>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</GroupBox> <DockPanel Grid.Row="" Margin="" Name="dockPanel1" Grid.ColumnSpan="">
<Label Height="" Name="label1" Margin="7,0,0,0">Status:</Label>
<Button Height="" Name="btn_Start" DockPanel.Dock="Right" Padding="8,3" Margin="7,0">Start</Button>
<TextBlock Height="" Name="tbk_Status" Background="White" Text=""/>
</DockPanel> <ProgressBar Name="pBar" Grid.Row="" Grid.ColumnSpan="" Visibility="Hidden" /> </Grid>
</Window>

Grid.Row="" 代表在几行, Grid.Column="" 代表在几列. RowSpan,ColumnSpan 代表跨几行,几列.  和HTML的table是一样的道理.

Padding=““  Margin=”“  这些都是定位这个位置,类似HTML的属性.

这个设置Window在屏幕中间:WindowStartupLocation="CenterScreen"

最好设置一下Window的最小大小,这样就不会把重要信息隐藏了.

MinWidth="550"
MinHeight="550"
WindowStyle="None"

下一篇:WPF 多线程处理(3)

上一篇:WPF 多线程处理(1)

WPF 多线程处理(2)的更多相关文章

  1. WPF 多线程处理(1)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 废话不多说,先上图: 多线程处理数据后在th ...

  2. WPF 多线程处理(5)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 项目的目录: 以下是FileStroage的 ...

  3. WPF 多线程处理(4)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 开始一个线程处理读取的文件并且更新到list ...

  4. WPF 多线程处理(6)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 以下是子窗体的UI: <Window ...

  5. WPF 多线程处理(3)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 首先我们需要几个属性来保存取得的数据,因为在 ...

  6. 用 UI 多线程处理 WPF 大量渲染的解决方案

    众所周知, WPF 的 UI 渲染是单线程的,所以如果我们异步或者新建线程去进行数据处理的时候,处理完,想要更新 UI 的时候,需要调用一下 Dispatcher.Invoke,将处理完的数据推入到 ...

  7. C# & WPF 随手小记之一 ——初探async await 实现多线程处理

    嗯...我也是在园子待了不短时间的人了,一直以来汲取着园友的知识,感觉需要回馈什么. 于是以后有空我都会把一些小技巧小知识写下来,有时候可能会很短甚至很简单,但希望能帮到大家咯. 第一篇文章来说说as ...

  8. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  9. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

随机推荐

  1. [设计模式]<<设计模式之禅>>抽象工厂模式

    1 女娲的失误 上一篇讲了女娲造人的故事.人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱.仇恨.喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍 脑袋,忘记给人类定义性别了 ...

  2. 关于Linux系统和Windows系统中文件夹的命名规范

    Windows系统中. 1.在创建文件夹的时候不能以"."开头(但是文件以多个点开头并且还有其他合法字符的话就是合法的) 但是在windows系统中确实见过以一个点".& ...

  3. hdu 2196 树形dp

    思路:先求以1为根时,每个节点到子节点的最大长度.然后再次从1进入进行更新. #include<iostream> #include<cstring> #include< ...

  4. CXF(2.7.10) - RESTful Services, JSON Support

    在 CXF(2.7.10) - RESTful Services 介绍了 REST 风格的 WebService 服务,数据传输是基于 XML 格式的.如果要基于 JSON 格式传输数据,仅需要将注解 ...

  5. Quartz Scheduler(2.2.1) - Usage of CronTriggers

    Cron is a UNIX tool that has been around for a long time, so its scheduling capabilities are powerfu ...

  6. 把mvc4彻底搞定(一)

    1 .net web开发方式 webform开发 asp.net mvc开发 2 请求模式 webform方式:客户端向服务端请求一个aspx页面,服务端生成一个页面对象类,调用这个页面对象类的PR方 ...

  7. 做SqlDependency总结的一些经验

    1.--查询是否具有Broker功能  select is_broker_enabled from sys.databases where [name]='DBName' 2.--打开Broker功能 ...

  8. jQuery中ajax应用

    一:Ajax介绍 1.ajax的定义:客服端js所发起的http请求的代号,无刷新的数据更新. 2.ajax原理: 运用XHTML+CSS来表达信息,运用javascript操作DOM(Documen ...

  9. C#Winform版获取Excel文件的内容

    public MainForm() { InitializeComponent(); //this.ofd_in.DefaultExt = ".xlsx"; this.ofd_in ...

  10. signal信号类型列表

    Linux支持的信号列表如下.很多信号是与机器的体系结构相关的 信号值 默认处理动作 发出信号的原因 SIGHUP 1 A 终端挂起或者控制进程终止 SIGINT 2 A 键盘中断(如break键被按 ...