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. android-ramdisk.img分析、recovery.img&boot.img执行过程

    转载请注明来源:cuixiaolei的技术博客 一.ramdisk介绍 ramdisk通过直面意思就大概能理解意思,ram disk虚拟内存盘,将ram模拟成硬盘来使用的文件系统.对于传统的磁盘文件系 ...

  2. java中的静态方法

    静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间, ...

  3. DedeCMS更新文章同步发布到新浪微博

    如果在网站推广过程中能利用好微博这个工具的话,将会给网站的推广工作带来巨大的便利.下面以dede程序为例讲讲如何将网站内容自动同步到新浪微博. 在新浪微博的工具中有个自动关联博客的功能,利用好这个功能 ...

  4. 怎么在html页面和js里判断是否是IE浏览器

    HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...

  5. [改善Java代码] 推荐使用序列化实现对象的拷贝

    建议44: 推荐使用序列化实现对象的拷贝 上一个建议说了对象的浅拷贝问题,实现Cloneable接口就具备了拷贝能力,那我们来思考这样一个问题:如果一个项目中有大量的对象是通过拷贝生成的,那我们该如何 ...

  6. ImageView的src和background的区别

    参考资料: http://blog.csdn.net/dalleny/article/details/14048375 http://www.android100.org/html/201508/27 ...

  7. 20个2014年最优秀的PHP框架

    http://www.php100.com/html/it/mobile/2014/0813/7198.htmlhttp://medoo.in/api/select 

  8. HttpClient(4.3.5) - HTTP Header

    An HTTP message can contain a number of headers describing properties of the message such as the con ...

  9. asp中utf8不会出现乱码的写法

    <%@ CODEPAGE=65001 %> <% Response.CodePage=65001%> <% Response.Charset="UTF-8&qu ...

  10. Ubuntu中wine安装的程序如何卸载

    很多朋友尝试在Ubuntu中用wine安装exe格式的应用程序,但经常遇到装完之后启动程序就崩溃.或者根本无法启动.无法使用的情况,于是想立即把安装的程序卸载,可是在wine中却找不到卸载exe软件的 ...