WPF研究之道——数据驱动UI】的更多相关文章

如果有人问你wpf和winform的区别,也许你会说,wpf的界面比较漂亮,wpf有诸多新的理念,的确如此.我今天想说的是wpf的数据驱动UI的理念. 传统的winform,想要更新界面内容,是不是必须得触发个事件,比如点击按钮?答案是肯定的.那么wpf它可以让数据对象变化,界面绑定到数据对象上,因此界面随之变化,不需要手动地刷新页面.我们来看看下面一幅图: 这个池子模型,是我从我的一个项目当中抽取出来的,当时脑子里也是有这么个模型,只是没有画出来而已.数据的流向从池子开始,首先数据到达池子,抓…
前台: <DataGrid x:Name="TestCaseDataGrid" ItemsSource="{Binding}" > {binding} 是个简写的方式,绑定的是datagrid 对象的DataContext 后台: this.TestCaseDataGrid.DataContext = Data.PagerSource; Data.PagerSource是什么类型? public ObservableCollection<T>…
很久以前,我们用winform做过一个五子棋的程序,当时用winform的画图,先画出棋盘...后来项目的研究阶段,偶尔用winform做个小工具.闲暇之余,看到介绍wpf的资料,只知道它采用了xaml格式的界面,于是创建一个新的wpf项目,拖几个控件,改改样式,觉得界面编写比较新颖,也可以双击按钮,进入后台代码.这一点与winform一样. 开始正式接触wpf也是从去年年底开始,当项目决定使用wpf时,我便与wpf结下不解之缘.为什么决定使用wpf?是什么驱使我们采用新的技术?  boss想着…
"想要说些什么 又不知从何说起",每当想要写一些关于wpf的文章,总是沉思良久,怕自己写不好.今天我想要说的是wpf中datagrid控件.我们先来看看它在整个类的层次结构:                                                                图1  wpf                                                                                      …
我们知道WPF中普通的按钮,长得丑,所以自定义按钮,在所难免.我们给按钮添加 MoveBrush,EnterBrush两把刷子,其实就是鼠标经过和鼠标按下的效果.只不过这不是普通的刷子,而是带图片的ImageBrush刷子. public class ShareButton : Button { /// <summary> /// 鼠标移走 /// </summary> public static readonly DependencyProperty MoveBrushPrope…
想要说些什么,却不知道从哪开始."形而上谓之道,形而下谓之器".与其坐而论道,不如脚踏实地,从最实用的地方开始. 我们先来看看wpf中的grid控件.grid控件是个网格的布局控件,类似于网页中的table.我们看看一个例子: <Grid x:Name="> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition>…
这是我们的datagrid分页效果图,有上一页,下一页,可以跳到任何一页.当页码比较多的时候,只显示几页,其余用点点,界面实现如下: <!--分页--> <StackPanel Orientation=" Margin="0 20" x:Name="fulltextPager"> <Button x:Name="prePage" Click="prePage_Click" Style=&…
ProgressBar控件,非常有用.它在什么情况下有用呢?如何使用?带着这两个问题,我们探讨下. 如果程序需要很长时间来运行,用户在不知道的情况下,以为程序已经"卡死"了,没有响应,这时候就该用进度条了,它主动告诉用户的执行情况,那么用户知道还需要等待多久. 上面的使用场景,很好理解,那么,如何使用呢? 一边要执行长任务,一边还要不断地显示当前进度.这时候就得用多线程了,有人说那我就用单线程怎么了,那么咱们试一试便知道了.看如下的代码: private void progressTe…
原文:拒绝卡顿--在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            this.Dispatcher.Invoke(new Action(()=> { }));    …
原文:WPF案例 (六) 动态切换UI布局 这个Wpf示例对同一个界面支持以ListView或者CardView的布局方式呈现界面,使用控件ItemsControl绑定数据源,使用DataTemplate为ItemsControl分别预定义了ListView和CardView的样式,在程序运行时,可在这两种Layout之间互相切换,界面如下.源代码在这里下载   为ItemsControl定义ListView UI布局的ItemTemplate,并指定MouseOver时DataTemplate…