WPF+Caliburn.Micro 杂记
开发过程中的小问题总结
1DataGrid的Header里面给Checkbox绑定IsEnabled,绑不上去.
2由A页面跳转到B页面,再由B页面返回一个值
3DataGrid里面的行通过一个方法将DataGrid对象作为一个参数传递
4DataGrid结束行编辑数据不能及时更新
5窗体在屏幕的最前面
6弹出窗口抢焦点
7DataGrid双击编辑,获取数据验证
1DataGrid的Header里面给Checkbox绑定IsEnabled,绑不上去.
原因:在DataGrid直接{Binding Enabled}这么写,CM默认是去找DataGrid,所以找不到,改成
IsEnabled="{Binding DataContext.Enabled,RelativeSource={RelativeSource AncestorType={x:Type Window}},Mode=TwoWay}"
指向WIndow就可以找到了
<DataGridTemplateColumn.Header>
<CheckBox cal:Action.Target="{Binding ElementName=List}"
IsEnabled="{Binding Enabled}" 绑定IsEnabled
cal:Message.Attach="[Event Checked]=[Action SelectAll];[Event Unchecked]=[Action UnselectAll]"/>
</DataGridTemplateColumn.Header>
2由A页面跳转到B页面,再由B页面返回一个值
解决方法:可以定义一个事件
A页面
public void Search()
{
WindowManager window = new WindowManager();
BViewModel search = new BViewModel(itle, false);
search.Get += new EventHandler(SearchGuid);//注册事件
window.ShowDialog(search);//打开窗体
}
private void SearchGuid(object sender, EventArgs e)
{
得到传过来的值 = ((B) sender).Strmodule;
}
B页面
public void 触发这个事件()
{
if (GetDepartGuid != null)
{
Get(this, EventArgs.Empty);
}
}
}
定义事件
public event EventHandler Get;
3DataGrid里面的行通过一个方法将DataGrid对象作为一个参数传递
<DataTemplate>
<TextBox Width="100" Text="{Binding Num,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Tag="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
cal:Message.Attach="[Event LostFocus]=[Action TextLostFocus($this.Tag)]"></TextBox>
</DataTemplate>
找到上一级的DataGrid
4DataGrid结束行编辑数据不能及时更新
原因是当鼠标离开编辑才文本框以后,这行没结束编辑,需要人为的结束编辑
System.Windows.Controls.DataGrid dataGrids = dr as System.Windows.Controls.DataGrid;
dataGrids.CommitEdit(DataGridEditingUnit.Row, true);
5窗体在屏幕的最前面
Topmost="True"
6弹出窗口抢焦点
比如你正在输入东西,突然弹出一个窗口,你的光标就没了
AllowsTransparency="True"
7DataGrid双击编辑,获取数据验证
最开始做的时候走了个弯路,用了个模板,里面放了个TextBox,倒是实现了双击一列处于编辑状态,得到TextBox里面的值,并可以控制其能否修改,验证。后来发现走太2了。我们都知道DataGrid自带行编辑,然后你用CellEditEnding这个事件,把他的参数e转成TextBox就可以得到值了,然后去验证。不过得记得在将EditingElement转成TextBox之前得判断一下他是不是TextBox,不然有的时候你的其他字段里面放的是Combox之类的就会异常了。
WPF+Caliburn.Micro 杂记的更多相关文章
- [WPF] Caliburn Micro学习三 Binding
Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...
- [WPF] Caliburn Micro学习二 Infrastructure
Caliburn Micro学习一 Installation http://blog.csdn.net/alvachien/article/details/12985415 Step 1. 无论是通过 ...
- [WPF] Caliburn Micro学习一 Installation
在之前的文章(http://blog.csdn.net/alvachien/article/details/5670838)里面,已经提到过MVC和MVVM在Design Pattern上的比较. 首 ...
- WPF + Caliburn.Micro +ActionMessage事件绑定
ActionMessage事件绑定是个人觉的算是CM的精髓了,比如说我在View里面放个button,我们要在他的click事件里面写东西,怎么写.如果是WPF我们直接在CS里面写就可以.但是CM不行 ...
- WPF Caliburn.Micro ListView 批量删除 新方法.高效的
上一片我做的批量删除,是更具ListView的选项改变事件,然后放到一个全局变量里面,缺点已经说了.这次又找到一个好的方法.和大家分享一下.这次我将删除按钮的click事件里面的参数绑定为ListVi ...
- WPF Caliburn.Micro ListView 批量删除,有其他方法的大家一起交流一下
做这种批量删除的时候我的想法是获取每行的ID,然后更具ID删除,看过一些博客,大部分都是直接写在.CS文件里面,将ListView和CheckBox关联起来,最后用checkbox ck=sender ...
- WPF +MVVM(Caliburn.Micro)项目框架
最近做了一个软件,这个软件不是网站,但是与HTML,AJAX等技术密切相关,也不是只有单纯的数据库增删改查,还涉及到线程协调,比较复杂的文本处理…… 这样的软件,用OA,ERP的框架显然是不合适的,因 ...
- WPF 使用Caliburn.Micro 多线程打开窗口
我们都知道在WPF里面用多线程打开一个窗口很简单.如下 public void ClickMe(object sender) { Thread newWindowThread = new Thread ...
- 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器
从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了. Calibu ...
随机推荐
- GET方法传递中文参数乱码解决办法
1.在页面中对你的URL进行编码 使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI(“小甜甜") 2.在后台通过解码来接 ...
- codeforces B. Design Tutorial: Learn from Life
题意:有一个电梯,每一个人都想乘电梯到达自己想要到达的楼层!从a层到b层的时间是|a-b|, 乘客上下电梯的时间忽略不计!问最少需要多少的时间.... 这是一道神题啊,自己的思路不知不觉的就按 ...
- datatables.js 简单使用--多选框和服务器端分页
说明:datatables是一款jQuery表格插件.感觉EasyUI的datagrid更易用 内容:多选框和服务器端分页 缘由:写这篇博客的原因是datatables的文档写的不怎么样,找东西很麻烦 ...
- 解决msgfmt无法使用的问题
参考: http://blog.sina.com.cn/s/blog_4fb490ff0100csne.html http://linux.die.net/man/1/msgfmt http://pa ...
- Office Web Apps Server 概述
Office Web Apps Server 是新的 Office 服务器产品,它提供 Word.PowerPoint.Excel 和 OneNote 的基于浏览器的版本.单个 Office Web ...
- 使用 CSS3 打造一组质感细腻丝滑的按钮
CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果.下面这些发出闪亮光泽的按钮,很漂亮吧?把鼠标悬停在按钮上,还有动感的光泽移动效果. 温馨提示:为保证最佳的效 ...
- Java魔法堂:打包知识点之jar
一.前言 通过eclipse导出jar包十分方便快捷,但作为码农岂能满足GUI的便捷呢?所以一起来CLI吧! 二.JAR包 JAR包是基于ZIP文件格式,用于将多个.java文件和各种资源文件, ...
- sprint3 总结
sprint3 本次的主要任务是找项目中的bug,并与客户不断地沟通以满足客户的要求.队友主要负责找项目中的bug或提出一些建议.我主要是负责与客户沟通和修复bug.总的来说进展还算顺利. 团队贡献分 ...
- IntelliJ IDEA 的SVN配置与使用
SVN 首先提一句,IDEA对各种的版本控制工具的支持是非常好的,点击3 打开系统设置界面,就可以看到他有专门的一栏 Version Control 里边是对各种版本控制工具的支持,其中我要用的SVN ...
- 重新想象 Windows 8 Store Apps (69) - 其它: 自定义启动屏幕, 程序的运行位置, 保持屏幕的点亮状态, MessageDialog, PopupMenu
[源码下载] 重新想象 Windows 8 Store Apps (69) - 其它: 自定义启动屏幕, 程序的运行位置, 保持屏幕的点亮状态, MessageDialog, PopupMenu 作者 ...