WPF开发经验
例如:控件属性="{Binding SettingMarkContent,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
OneTime: 绑定也会将数据从源发送到目标;但是,仅当启动了应用程序或 DataContext 发生更改时才会如此操作,因此,它不会侦听源中的更改通知。
OneWayToSource: 绑定会将数据从目标发送到源。
TwoWay: 绑定会将源数据发送到目标,但如果目标属性的值发生变化,则会将它们发回给源。
Default: binding的模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay.
上面的例子不设Mode时,默认的就是Default.
System.Environment.Exit(System.Environment.ExitCode);
this.notifyIcon = new NotifyIcon();
this.notifyIcon.BalloonTipText = "running in background";
this.notifyIcon.ShowBalloonTip(2000);
this.notifyIcon.Text = "running in background";
this.notifyIcon.Icon = new System.Drawing.Icon(DirectoryManager.AppPath + "\\UpDownload_48x48.ico");
this.notifyIcon.Visible = true;
this.Icon = new BitmapImage(new Uri(@"UpDownload_48x48.ico", UriKind.Relative));
//打开菜单项
System.Windows.Forms.MenuItem open = new System.Windows.Forms.MenuItem("Open");
open.Click += new EventHandler(Show);
//退出菜单项
System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("Exit");
exit.Click += new EventHandler(Close);
//关联托盘控件
System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { open, exit };
notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen);
this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler((o, e) =>
{
if (e.Button == MouseButtons.Left) this.Show(o, e);
});
private NotifyIcon notifyIcon;
private void Show(object sender, EventArgs e)
{
this.Visibility = System.Windows.Visibility.Visible;
this.ShowInTaskbar = true;
this.Activate();
}
private void Hide(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
this.Visibility = System.Windows.Visibility.Hidden;
}
private void Close(object sender, EventArgs e)
{
System.Environment.Exit(System.Environment.ExitCode);
//System.Windows.Application.Current.Shutdown();
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
Hide();
}
3.判断应用程序是否开启状态
//获取欲启动进程名
string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
////获取版本号
//CommonData.VersionNumber = Application.ProductVersion;
//检查进程是否已经启动,已经启动则显示报错信息退出程序。
if (System.Diagnostics.Process.GetProcessesByName(strProcessName).Length > 1)
{
MessageBox.Show("MetadataSync running in background!", "Message", MessageBoxButton.OK, MessageBoxImage.Exclamation);
Application.Current.Shutdown();
return;
}
4.更新app.config的AppSettings
string key = "ScheduleLastUpload", value = DateTime.Now.ToString();
Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
bool hasSetKey = false;
foreach (string item in conf.AppSettings.Settings.AllKeys)
{
if (item == key)
{
conf.AppSettings.Settings[item].Value = value;
hasSetKey = true;
}
}
if (hasSetKey == false)
{
conf.AppSettings.Settings.Add(key, value);
}
ConfigurationManager.AppSettings.Set(key, value);
conf.Save();
5、给TextBlock加ToolTip,绑定自身
Text="{Binding Path=Patientmain,
Converter={StaticResource fullNameConverter}}"
TextTrimming="CharacterEllipsis">
</TextBlock>
Margin(外边距),指的是元素周围的距离,决定了元素周围留下的空白大小;Padding(内边距),指的是元素边界与其内容之间的距离。做过网页设计、用过CSS的同学对margin和padding属性肯定不陌生,但也有所区别。WPF中的Margin值可以为一个数字、一对数字和四个数字。
一个数字代表四周距离相同,为指定值。一对数字时,第一个数字表示左侧和右侧距离相同,为指定值;第二个数字表示顶部和底部距离相同,为指定值。(与CSS中顺序不同)。四个数字,分别表示左侧、顶部、右侧、底部距离,该顺序与CSS不同。
CSS中margin和padding属性顺序是:两个数字对应左右、上下;四个数字对应上、右、下、左;
区别HTML DOM margin属性
定义和用法
margin属性设置元素的外边距。
该属性可使用1到4个值:
如果规定一个值,比如div{margin:50px}-所有的外边距都是50px
如果规定两个值,比如div{margin:50px10px}-上下外边距是50px,左右外边距是10px。
如果规定三个值,比如div{margin:50px10px20px}-上外边距是50px,而左右外边距是10px,下外边距是20px。
如果规定四个值,比如div{margin:50px10px20px30px}-上外边距是50px,右外边距是10px,下外边距是20px,左外边距是30px。
计算:
继存INotifyPropertyChanged
public class NotificationObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string proname)
{
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(proname));
}
}
public class TestDemo1CalcuNumber : NotificationObject
{
private int _num1;
public int Num1
{
get { return _num1; }
set
{
_num1 = value;
RaisePropertyChanged("Num1");
}
}
}
然后在VIEWMODEL中可能定义绑定事件,先执行属性中的Set属性RaisePropertyChanged("Num1");,然后执行public void RaisePropertyChanged(string proname),然后执行CalcuNumber_PropertyChanged,最后执行属性中的get属性。
CalcuNumber.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(CalcuNumber_PropertyChanged);
void CalcuNumber_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Num1" || e.PropertyName == "Num2")
{
CalcuNumber.Result = CalcuNumber.Num1 + CalcuNumber.Num2;
}
}
弹出屏外层灰色背景半透明背景
<Grid x:Name="GrdGraphicalResults" Grid.RowSpan="3" Visibility="Collapsed">
<Grid.Background>
<SolidColorBrush Color="Black" Opacity="0.6"></SolidColorBrush>
</Grid.Background>
<Border Background="White">
....
</Border>
</Grid>
WPF开发经验的更多相关文章
- WPF开发经验-实现Win10虚拟触摸键盘
一 引入 项目有个需求,需要实现纯触控操作进行键盘输入.项目部署在Win10系统上,考虑有两种方案来实现. 通过调用Win10自带的触摸键盘来实现: 通过WPF实现一个触摸键盘来实现: 二 调用Win ...
- WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法
一 问题的发现 最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理. 于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里. 调 ...
- WPF开发经验-实现自带触控键盘的TextBox
一 引入 项目有个新需求,当点击或触碰TextBox时,基于TextBox的相对位置,弹出一个自定义的Keyboard,如下图所示: 二 KeyboardControl 先实现一个自定义的Keyboa ...
- WInform 创建一个简单的WPF应用
(一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...
- UWP中新加的数据绑定方式x:Bind分析总结
UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
- UWP学习目录整理
UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...
- 第十四章:样式(Style)和主题(Theme)
简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类 ...
- Windows Phone开发(1):概论
原文:Windows Phone开发(1):概论 Windows Phone是微软公司开发的手机操作系统,这里就不多介绍,和Android,iPhone一样运行在智能手机上,相信大家都很熟悉. 目前来 ...
- 前端MVVM框架:Knockout.JS(一)
前言 在我们平时开发 Web 应用程序的时候,如果项目不算特别大的话,一般都是拿 jQuery 再配合一些前端 UI 框架就在项目上面应用了.如果页面逻辑稍微复杂的话,那个在写前端 JavaScrip ...
随机推荐
- 解析JDK 7的动态类型语言支持
http://www.infoq.com/cn/articles/jdk-dynamically-typed-language
- Flex air修改外部xml文件 (转)
AIR的文件操作不难,看完教程应该可以满足你对文件的所有基本操作.这篇教程主要以实际操作中遇到的情况来讲解 我们想想文件操作都会有什么内容,无非是创建,修改,删除,移动,拷贝.在这个过程中我们会涉及到 ...
- oracle 创建用户
/*分为四步 *//*第1步:创建临时表空间 */create temporary tablespace ycjy tempfile 'D:\oracledata\ycjy.dbf' size 50 ...
- [转载]Vivado轻松实现IP封装
Vivado轻松实现IP封装 1.新建一个测试工程 工程化的设计方法是离不开工程的,第一步往往都是新建工程,后面我会学习去工程化的开发方法,可能会更加高效. 2.利用向导完成IP封装 2.1.启动IP ...
- [python实现设计模式]-2.模板方法模式---把大象关进冰箱.
平时大家上班都很累,为了增加工作中的欢乐气氛,黄页组准备搞个游戏. 游戏的名字是把大象关进冰箱.游戏很简单,需要把指定的物品放进冰箱. 我们都知道,把大象放进冰箱,分3步. 第一步,打开冰箱门,第二步 ...
- Google Protocol Buffer 的使用和原理[转]
本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...
- 规则引擎集成接口(八)Java接口实例
接口实例 右键点击“对象库” —“添加接口实例”,如下图: 弹出如下窗体: 输入接口的参数信息: 点击接口“求和”,选择选项卡“求和操作”,点击添加图标 ,如下: 弹出如下窗体,勾选方法“coun ...
- SVN show log failed
Q: SVN 不能显示日志 能正常update, commit,但是show log的时候报错 A:可能原因是服务器权限配置问题 修改配置文件svnserve.conf 和 authz, 修改前请先备 ...
- adb shell出错“error: unknown host service”
已经测试,可用: 在命令行输入adb shell后输出如下错误: adb server is out of date. killing... ADB server didn't ACK * fail ...
- 庆祝下:iOS 开发者企业级计划(299美元/年帐户+邓白氏码免费) 和 Windows Phone公司应用(公司帐户99美元+Symantec企业证书299美元/年))顺利发布成功
时间:2013-11-15,地址:http://192.168.0.8 网站可下载三个终端应用直接安装IOS,Windows Phone,Android iOS: 企业版IDP通过 iTunes.使 ...