zoukankan      html  css  js  c++  java
  • 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之类的就会异常了。

  • 相关阅读:
    Flex 布局教程:语法篇
    一些不错的滚动条
    SharePoint缓存导致访问慢解决
    针对SharePointFarm场时安装部署OWA的步骤
    【转】必需知道的 SharePoint 权限 Tips
    【转】SharePoint工作流中常用的方法
    通过SPList Definition自定义ListItem打开编辑详细页面
    Jquery 实现Xml文件内容处理
    【转】为 XmlNode.SelectNodes 加上排序功能
    [MSDN]关键字查询语言 (KQL) 语法参考
  • 原文地址:https://www.cnblogs.com/lijin/p/3422001.html
Copyright © 2011-2022 走看看