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. Scrapy中使用cookie免于验证登录和模拟登录

    Scrapy中使用cookie免于验证登录和模拟登录 引言 python爬虫我认为最困难的问题一个是ip代理,另外一个就是模拟登录了,更操蛋的就是模拟登录了之后还有验证码,真的是不让人省心,不过既然有 ...

  2. nginx是什么nginx安装与配置之windows版

    1.nginx是什么 为了快速了解nginx我们先引用网上的nginx介绍: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP ...

  3. test_CSDN_markdown_format

    test Markdown编辑器写博客,使用CSDN的markdown模版 测试结果 不支持的模块 生成目录[toc] 流程图 文献引用 其它模块正常 正文 本Markdown编辑器使用StackEd ...

  4. Zookeeper:分布式程序的基石

    一.目录 1.zookeeper是什么? 2.安装.配置.启动.监控 3.javaApi基础用法 4.应用场景 5.CAP理论/paxos算法 二.zookeeper简介 官方版:zookeeper是 ...

  5. hibernate in List查询条件 sum求和使用参考

    @Override public Integer getSumZongShuByidList(List<String> idList){ Integer zongshu = 0; Stri ...

  6. 【Android Developers Training】 66. 添加动画

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

  7. 打开vmvare出现The VMware Authorization Service is not running。

    win+r再输入cmd打开doc,输入services.msc打开服务,吧Vmware Authorization Service 更改为自动或者将其启动即可.

  8. Resetting Frame Animation

      最近在做个小项目的时候,需要用到帧动画.对应着某种状态,该动画可以停止和再次播放.我们知道,通过函数 someAnimObj.start() someAnimObj.stop() 可以很容易地实现 ...

  9. angular popover的触发问题;

    popover 一般如下用法; <div uib-popover="内容" popover-animation="false" popover-appen ...

  10. spring简单笔记

    1.普通注入 1)构造器注入 <constructor-arg name="id" value="100" /> #直接赋值 <constru ...