wpf技巧

隐藏控件不占空间,设置visibility为:Collapsed

tabcontrol的高度宽度跟随界面的大小变化:属性height\width绑定grid的actualheight\actualwidth,xaml代码Width="{Binding ActualWidth, ElementName=grid}" Height="{Binding ActualHeight, ElementName=grid}"

控制控件所在的StackPanel,就能控制多个控件的属性。如设置StackPanel的isEnable为false,那么此StackPanel下的控件的isEnable都未false

xaml和后台映入命名空间的方式不同,比如引入拥有 Triggers 和 Behaviors 附加属性的静态类——Interaction类 。 后台命名空间引入:using System.Windows.Interactivity

xaml引入:xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity

datagrid列重复,将AutoGenerateColumns设为false即可

操作excel。添加office、excel dll,项目右键引用、com里搜索,读取导出excel所需命名空间:引用com using Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;

读取dataset DataSet.Tables[0].Rows[0]["username"].ToString()

Popup显示位置的设置 IsOpen StaysOPen Placement="Mouse"(在鼠标点击处打开)

获取datagrid所在行id:DataRowView ds = myDataGrid.SelectedItem as DataRowView;
MessageBox.Show(ds.Row[0].ToString());
修改datagrid一行即引发的事件为RowEditEnding

转义字符串,加个@号

string str=@"df
sadf
sdf";

设置全局样式:

在app.xaml的resourcedictionary节点里加上
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ResourceDic/MainResourceDictionary.xaml"/>
<ResourceDictionary Source="Themes/Style.xaml"/>
</ResourceDictionary.MergedDictionaries>
在style.xaml里定义样式,比如<Style x:Key="s1" TargetType="TextBox">
<Setter Property="Background" Value="#FFEAEAEA"></Setter>
</Style>

TextBox引用Style="{StaticResource s1}"即可

将button抽出来放在单独的文件,可以在blend里选中button,右键剪辑样式-编辑副本

WCF

默认情况下,BasicHttpBinding发送的是明文数据,而WsHttpBinding发送的是加密和更加安全的数据。
契约相当于公司与客户之间签订的合同
DataContract需要引用命名空间system.Runtime.Serialization并using到cs文件中
Reference.cs出错,很多处错误,发现是引用没更新的原因
服务端定义客户端的各种东西,比如绑定、终结点、服务、行为等
有趣的单向双向通讯,在operationcontract操作契约中的isOneWay是true或否中决定

WCF服务,先是定义服务协定,而服务协定中会有若干个服务操作协定(OperationContract),是这样吧?而所谓的操作协定,就是一个方法。

协定有数据协定DataContract,服务协定ServiceContract,信息协定MessageContract

静态对象会导致new窗体时发生xamlparseexception错误

调试器无法继续运行该进程。无法启动调试 卸载部署项目并重新加载项目即可

打包文件会出现的错误

右击setup项目,点击install出现错误:
错误-1014: Cannot rename directory E:\开发项目\MyWPFProject\Setup1\Setup1\Express\SingleImage to E:\开发项目\MyWPFProject\Setup1\Setup1\Express\SingleImage.Bak.
Windows Explorer or a DOS prompt may be pointing to a subfolder of the release output folder (Disk1) or to the Interm folder, locking it. Change the current directory. Close any open files in the Disk1 folder. Close Msidb.exe if it is open.
删除SingleImage文件夹即可

调试setup打包项目,出现“调试器无法继续运行该进程。无法启动调试“错误,右键卸载打包项目再重新加载即可

样式

button圆角:<Button x:Name="queryTB" Margin="0,0,6,0" Content="{DynamicResource query}" BorderBrush="#FFB0BED2" BorderThickness="0.5,1,0.5,0.3" Foreground="#FF294364" >
<Button.Template >
<ControlTemplate TargetType="{x:Type Button}" >
<Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="3,3,3,3">
<Border.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFDFEBF9" Offset="0"/>
<GradientStop Color="#FFD2E0EF" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" ></ContentPresenter>
</Border>
</ControlTemplate>
</Button.Template>

command传递控件本身

<TextBox x:Name="usernameTB" Grid.Row="0" Grid.Column="1" MinWidth="133" MaxWidth="228" BorderBrush="#FF8BA0BC" LostFocus="usernameTB_LostFocus" TextChanged="usernameTB_TextChanged" Style="{DynamicResource TextBoxStyleOne}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<i:InvokeCommandAction Command="{Binding GotfocusCommand}" CommandParameter="{Binding ElementName=usernameTB}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>

ViewModel
if (textbox.GetType().ToString() == "System.Windows.Controls.TextBox")
{
TextBox tb = textbox as TextBox;
if (tb != null)
{
// System.Windows.MessageBox.Show("111"+tb.Name);
tb.Style = tb.TryFindResource("s1") as Style;
}
}

wpf的一些总结的更多相关文章

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

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

  2. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  3. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  4. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  5. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  6. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  7. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  8. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  9. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  10. WPF 微信 MVVM

    公司的同事离职了,接下来的日子可能会忙碌,能完善DEMO的时间也会少了,因此,把做的简易DEMO整体先记录一下,等后续不断的完善. 参考两位大神的日志:WEB版微信协议部分功能分析.[完全开源]微信客 ...

随机推荐

  1. Here文档

    Here文档为需要输入的程序,例如,mail.sort和cat等接收在线文本,直到遇到用户定义的结束符号为止.最常用的用户是在Shell脚本中和case命令一起创建菜单.自动登录等等. 1.建立菜单 ...

  2. 使用dom4j讲xml字符串递归遍历成Map

    package test; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import j ...

  3. twisted学习之reactor

    reactor是twisted框架里面一个很重要的抽象,它为我们实现了循环,所以我们不用再去实现循环了. reactor有如下特点: 1.reactor循环会一致运行下去,可以使用Ctrl+C或者相关 ...

  4. js循环处理后台返回的json数组

    <script type="text/javascript"> function gongdan_search(elm){ var dangqian_value=$(e ...

  5. mac如何进入应用程序的内部文件夹?

    在程序点击右键,选择显示包内容,就可以看到了

  6. php二进制流文件

    <?php $img_file = 'test.png'; // $fp = fopen($img_file, 'rb'); // $content = fread($fp, filesize( ...

  7. 既然函数也是对象,那么为什么this不指向普通函数?

    function a(){ var b=1; function exp(){ alert(this.b); } exp(); } var b=2; a(); 既然函数是对象,且exp是在a中运行的,那 ...

  8. 【Android Developers Training】 44. 控制你应用的音量和播放

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. 固定Realm 与配置数据库连接实现登录验证

    具体内容 在之前的shiro的认证都是基于配置文件完成的,但是在整个shiro之中,对于用户的认证信息可能各种途径,那么在shiro中要想实现从不同的途径中取得用户的身份认证就需要Realm了. 认识 ...

  10. MyBatis基础

    一.大配置 <?xml version="1.0" encoding="UTF-8" ?> <!--文档类型,头文件--> <!D ...