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 ...
随机推荐
- JS移动端滑屏事件
来看看在pc上面的几个事件:onmousedown,onmousemove,onmouseup 我相信大家对这几个事件一定不陌生,第一个onmousedown表示鼠标按下,第二个onmousemove ...
- CentOS 6.4 快速安装Nginx笔记
CentOS 6.4 快速安装Nginx笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/9860 ...
- Tools - 为知笔记
为知笔记 Homepage Web登陆 帮助支持 功能 特色功能 发布到blog 便携版制作 模板 如何建立模板 下载为知笔记模版 Markdown http://www.wiz.cn/markdow ...
- Python - 多版本共存与虚拟独立环境
背景 利用pip直接在本地python环境安装包,基本上都安装到了site_package目录下面. 随着安装的包越来越多,依赖关系也就越来越复杂.不同的项目之间,依赖关系也会出现版本冲突的问题. 此 ...
- [python]python元类
这两天在看Django框架,里面的filter实现原理搞不明白,最后发现跟python的元类有关系. 原文:http://stackoverflow.com/questions/100003/what ...
- js获取html5 audio 音频时长方法
<audio src="我的好兄弟.mp3" controls="controls" id="audio" style=" ...
- js-条件语句、循环语句
一. 常见条件语句 if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if... ...
- c# XML序列化与反序列化
c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...
- 三分 --- POJ 3301 Texas Trip
Texas Trip Problem's Link: http://poj.org/problem?id=3301 Mean: 给定n(n <= 30)个点,求出包含这些点的面积最小的正方形 ...
- Install gocode
1. D:\AWS_workspace\DAAS_Go>go get -u -ldflags -H=windowsgui github.com/nsf/gocode 2. Then gocode ...