随笔分类 -  WPF

相关内容
摘要:在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的。而Invoke和BeginInvoke的区别嘛 就是一个是同步的一个是异步的,也就是一个需要等待一个不需要= =就比如一个最简单区别的例子://这个输出123 private void button1_Click(object sender, RoutedEventArgs e) { textblock.Text += "1"; this.Dispatcher.Invoke(new InvokeDeleg... 阅读全文
posted @ 2013-11-03 22:41 世界很灰暗 阅读(1859) 评论(1) 推荐(0) 编辑
摘要:当在每次上传或者下载的时候,我只想进行一个任务的,我用的是WebClient类,但是我又不想用同步的方法UploadFile、DownloadFile,因为WebClient这个类的同步方法没有UploadProgressChanged、UploadFileCompleted这两个事件,这样就不能简单的设置进度条啦。所以还是应该在异步事件中把他当做成同步的做咯,所以要用Queue这个东西,放进队列,然后一个一个的再放出来,方法嘛如下所示(以上传为例): private Queue filePaths = new Queue(); WebClient myWebClient = nu... 阅读全文
posted @ 2013-10-09 00:04 世界很灰暗 阅读(1850) 评论(0) 推荐(0) 编辑
摘要:在WPF中的平移缩放都是通过RenderTransform这个类来实现这些效果的,在这个类中,除了平移和缩放还有旋转、扭曲变换、矩阵变换。这些都差不多的,都是坐标的变换。这里我就先简单弄个平移和缩放吧:平移呢就是以原来的对象为坐标原点(0,0),然后向X轴、Y轴进行平移变换。缩放呢有几个属性,ScaleX、ScaleY属性表示对象在X、Y轴进行缩放的倍数,CenterX和CenterY属性指定一个中心点。下面有一个平移和缩放的简单的demo,用鼠标拖图片放进行平移,点击按钮来进行缩放,同时在缩放时让图片回到窗口的中央: ... 阅读全文
posted @ 2013-09-30 22:17 世界很灰暗 阅读(3667) 评论(1) 推荐(1) 编辑
摘要:在ListBox中碰到过几个问题,现在把它写出来:第一个就是在ListBoxItem中当我用触发器IsSelected和IsMouseOver来设置Background和Foreground的时候,Foreground是可以直接设置的,但是Background的颜色是不会改变的。网上查了下貌似是需要手动更改ListBoxItem的控件模板让其直接使用ListBoxItem的Background属性。如下:<Style x:Key="itemtemplate" TargetType="ListBoxItem"> <Setter Prope 阅读全文
posted @ 2013-06-20 00:57 世界很灰暗 阅读(1143) 评论(1) 推荐(1) 编辑
摘要:在WPF中的配置文件的读取也是经常用到的一个操作,虽然很基础,但是也记录一下,以后忘记了可以看一看。首先就是先新建一个Application Configuration Flie后缀名是.config的文件。如果本来就有就不需要新建了。它是这样的一个文件:<?xml version="1.0" encoding="utf-8" ?><configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework 阅读全文
posted @ 2013-06-19 23:45 世界很灰暗 阅读(1610) 评论(1) 推荐(1) 编辑
摘要:平常在用WPF的时候,还是经常用到资源这个东西的,引用资源的时候一般都会用到StaticResource和DynamicResource来引用资源,关于这两个的区别的话我就不多说了,详情可以去参考:用实例讲DynamicResource与StaticResource的区别。我只是想运用DynamicResource来动态的切换样式。从而达到改变一个界面的模板颜色、样式、位置等等。所以来看一个简单的Demo,首先是XAML: <DockPanel> <StackPanel DockPanel.Dock="Top"> <Button Name=&q 阅读全文
posted @ 2013-05-30 14:53 世界很灰暗 阅读(1454) 评论(2) 推荐(0) 编辑
摘要:WPF中的Adorner是一个挺有用的东西,表示刚刚学的话还是需要看一会的=-= 先学习下最简单的基础应用先,然后再继续往下挖掘。 首先,还是了解下Adorner是撒,由于本人比较菜,还是找个地方看一下比较好。先弄个连接放在以后慢慢翻一翻。考资料:WPF - Adorner && Adorner in WPF 然后么自己先弄一个简单的关于Adorner的东西,先把那个简单的比如把一个label的四个角都加一个圆圈。就是先弄一个label,然后用AdornerLayer.GetAdornerLayer()方法把label传进去,再用AdornerLayer.Add()把Adorn 阅读全文
posted @ 2013-02-05 22:47 世界很灰暗 阅读(849) 评论(0) 推荐(1) 编辑
摘要:在WPF中,Sytle是一个非常重要的东西,它是一种对属性值的处理,其中Trigger(触发器)则是在属性值的处理中加上条件。 WPF定义了五种Trigger来作为触发条件,分别是:Trigger,DataTrigger,MultiTrigger,MultiDataTrigger,EventTrigger。 下面最简单的一个Trigger是这样写的: View Code <Style TargetType="Button" x:Key="buttonStyle"> <Style.Triggers> <Trigger Prop 阅读全文
posted @ 2013-01-17 23:59 世界很灰暗 阅读(500) 评论(1) 推荐(0) 编辑
摘要:网上有TextBox的垂直居中,只需要设置他的Sytle让他有个宿主就可以了,但是因为Label的换行需要用到TextBlock的TextWrapping="Wrap"来换行,但是TextBlock貌似是不能设置他的Sytle的。所以Label也就不能像TextBox一样的直接写Sytle来让他垂直居中。 因此只能换个角度去考虑,用一个CustomControl,设置一个Text的依赖属性,让他绑定TextBox,当TextChanged的时候遇到回车就把字符串split分成两段加入List中,把ItemsControl的ItemsSource绑定到List,然后把Item 阅读全文
posted @ 2012-11-02 16:55 世界很灰暗 阅读(5847) 评论(0) 推荐(0) 编辑
摘要:制作WPF的阴影效果可以有很多种,貌似后来性能不好,然后被微软给X掉了。现在只有几个是可以用的,先暂时学习下现在有的,等以后看看用什么来代替原来的那些效果。1.首先最常见的一个阴影效果的类是DropShadowEffect。它有几种比较有用的属性比如:Color设置颜色,Direction设置投影的方向,ShadowDepth设置投影距纹理下方的距离,Opacity设置透明度等等。角度的设置是这样的:下面是一个例子和效果:View Code <TextBlock Text="Shadow Test" Foreground="Green" Horiz 阅读全文
posted @ 2012-10-22 19:08 世界很灰暗 阅读(8187) 评论(4) 推荐(5) 编辑
摘要:首先一个ListBox中,创建两个控制ItemsSource的类,可以动态的添加所需要的属性及内容。View Code public class Display { public double Width { get; set; } public double Height { get; set; } public string Content { get; set; } public Type PageTemplate { get; set; } public Display() { } public D... 阅读全文
posted @ 2012-10-21 22:20 世界很灰暗 阅读(1043) 评论(0) 推荐(2) 编辑
摘要:在WPF中有许多时候绑定到同一个对象上,因此就有一个隐式的数据源DataContext,有时把一个父控件直接设置成DataContext,当一个控件没有显示源对象时,WPF会遍历整个逻辑树,找到一个非空的Datacontext属性绑定上去。 还有在一些情况下可以通过Tag来绑定一些东西,也可以把一些属性绑定到Tag上面去。下面有一个最简单的例子我把Context和Tag都写在了里面:View Code <Window.Resources> <SolidColorBrush x:Key="myBrush" Color="Gold" /&g 阅读全文
posted @ 2012-10-21 02:05 世界很灰暗 阅读(3754) 评论(0) 推荐(0) 编辑
摘要:因为需要做个类似的东西,在版面的移动以及布局上需要学习的东西还是很多的。普通的Panel已经不能满足我的需求了,所以需要重新来自定义一个Panel来放入ListBox中,我做了一个DEMO,首先弄一个ListBox,把他的Template、ItemSource、Detetemplate等东西都先设置一下,这个我以前都写过学习过了,然后建一个类,这个类我们用来滑动以及设计模板,首先设置它的MeasureOverride和ArrangeOverride,这两个方法是WPF的Layout系统提供给用户的自定义接口,一个是测量范围给出所需要的范围,一个是安排Child的位置。这个玩意还是比较搞的,.. 阅读全文
posted @ 2012-10-09 20:11 世界很灰暗 阅读(3220) 评论(2) 推荐(0) 编辑
摘要:在我上一个BLOG中写到了滑动时不会触发ListBoxItem,同样接着上一个例子,我如果需要做一个分页滑动的效果的话,首先要有滑动的效果,我觉得如果是分页的话,那一个页面中肯定是固定Item数目,然后在Canvas中放入3个一样的ListBox分别把Canvas.left设置为你的窗口大小左右都放一个,中间放一个=-= 然后根据上个例子一样往左拉都触发动画效果让中间和右边的Lis-tBox同时往左移动,最后再把动画还原就可以了。这样就可以实现拖动效果,然后Item里面的数据的话只要每次滑动的时候在中间的那个ListBox中变化就可以了(这个东西下次再写)。动画的实现的话代码如下:View.. 阅读全文
posted @ 2012-09-19 21:34 世界很灰暗 阅读(4222) 评论(0) 推荐(0) 编辑
摘要:在做一个滑动的东西,里面有一些ListBoxItem,每个Item会触发一些事件。每次我滑动的时候如果从没有Item的地方滑到有Item的地方,或者从Item里面往外滑动时,都会触发到Item里面的事件。本来Item是用SelectionChanged的这个事件的。但对于我这种菜鸟来说表示消化不了。所以我把这些事件放到了PreviewMouseUp中,然后先在PreviewMouseDown中抓住鼠标的坐标,然后再在Up中计算出其中的坐标的差,然后在一定的范围内就代表这这个东西没有滑动而是正常的点击,而如果移动了一定的距离则表明我是在滑动,然后就可以不触发其中的事件。 下面我做了一个小的... 阅读全文
posted @ 2012-09-17 22:12 世界很灰暗 阅读(509) 评论(1) 推荐(0) 编辑
摘要:WPF中如果我设置完动画,再通过其他的设置来修改动画中的属性时,那这些属性就被锁住了,这时这个属性是不能够设置的。有很多种方法可以来把这个动画解锁。我做了一个小的Demo来设置这个值。 <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Center"> <Button Name="cmdStart& 阅读全文
posted @ 2012-09-08 15:12 世界很灰暗 阅读(401) 评论(0) 推荐(0) 编辑
摘要:1.首先,查下MSDN里面的定义: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件。 实现定义:路由事件是一个 CLR 事件,可以由RoutedEvent类的实例提供支持并由 Windows Presentation Foundation (WPF) 事件系统来处理。 然后,路由事件里面使用以下三个路由策略:冒泡、隧道、直接。简单的说就是冒泡事件是从事件源到根元素一次被引发,而隧道则相反。直接则是只有源元素本身调用以及相应。如果比较形象一点的话可以看一下这个http://www.cnblogs.com/WilliamJiang/... 阅读全文
posted @ 2012-09-08 14:50 世界很灰暗 阅读(352) 评论(0) 推荐(0) 编辑
摘要:对于普通的实体类的绑定,如果只是简单的添加删除的话不需要用到INotifyPropertyChanged接口,这样的话比较简单,只需要在datatemplate中绑定后台的属性即可。然后直接往里面加入数据就可以了。 如果用到了INotifyPropertyChanged这个接口的话这个可以实现在后台增加删改数据的时候前台能够同步显示。同时,前台修改数据,也能同步反应到绑定源中。使用这个接口时需要使用ObservableCollection集合类,这个类就是实现了INotifyCollectionChanged接口的一个集合类。还要设置IsSynchronizedWithCurrentIt... 阅读全文
posted @ 2012-08-30 23:04 世界很灰暗 阅读(881) 评论(0) 推荐(0) 编辑
摘要:学习了下ListBox的Style,开始的时候比较混乱,但理顺了再写个Demo后就能一目了然的看出中间的差别了。下面来一个一个的理解下: 1.Template:这个指的是ListBox这个控件的整体外观,这个类名为ControlTemplate,可以定义一些控件的自身外观,如圆角、颜色等。其中可以用<ItemsPresenter/>来替代容器中的子元素,然后在后面的Template中继续设置,或者也直接可以把模板写在中间,但需要加上IsItemsHost="True"在容器中显示这个子元素。我还是把他分开来写,这样能够清楚的分出每一个Template。下面是一个 阅读全文
posted @ 2012-08-14 23:12 世界很灰暗 阅读(1326) 评论(0) 推荐(0) 编辑
摘要:这两天在学习写一个关于RichTextBox的自定义控件,把RichTextBox加上一个行号。要在WPF中自定义一个控件,使用UserControl与CustomControl都是可以的。UserControl在开发上简单快速,可以将已有的控件作为子元素拼成UserControl并修改外观,但对模板样式支持度不好。既然做WPF的,那CustomControl更加能体现风格,这个应用的也更加的广泛,所以我选择了CustomControl来自定义我的控件,虽然我不知道我这么做是否合适= = 首先先建立新的project然后自定义控件,会发现中间会有一个\Themes\Generic.xam... 阅读全文
posted @ 2012-08-08 00:19 世界很灰暗 阅读(2217) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示