WEB开发网
开发学院图形图像Flash Silverlight学习笔记二(续) 阅读

Silverlight学习笔记二(续)

 2008-12-26 11:54:05 来源:WEB开发网   
核心提示:上篇中在设置排序标志的时候,需要不停的去刷新,Silverlight学习笔记二(续),这样做肯定是不行的,所以必须要找到其它的方式, 所以想了个折中的办法,就是在Header上面手工加上"↑"和"↓"来标示排序的方向, 看了一下关于自定义ColumnHeade

上篇中在设置排序标志的时候,需要不停的去刷新,这样做肯定是不行的,所以必须要找到其它的方式。

看了一下关于自定义ColumnHeader的内容,在2.0的测试版本中,可以直接设置Column.Header为某个自定义的控件,但是在正式版中,这个功能被取消了,必须要通过Column.HeaderStyle来设置,动态设置Style还是比较费事的,暂时还没有做好。

所以想了个折中的办法,就是在Header上面手工加上"↑"和"↓"来标示排序的方向。

所要做的就是在MouseDown中修改一下Header.Content

代码如下:

1privatevoiddgData_MouseLeftButtonDown(objectsender,MouseButtonEventArgse)
2    {
3      varu=fromelementinVisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null),dgData)
4          whereelementisDataGridColumnHeader
5          selectelement;
6
7      if(u.Count()==1)
8      {
9        //鼠标点击的ColumnHeader
10        DataGridColumnHeaderheader=(DataGridColumnHeader)u.Single();
11        //要排序的字段
12        string_newsort=header.Content.ToString();
13        //清除名称中的↑和↓
14        _newsort=removeSortStateFlag(_newsort);
15        //判断排序方向
16        if(_newsort==sortFiled)
17          dir=dir=="desc"?"asc":"desc";
18        else
19        {
20          //如果新的排序字段和当前的排序字段不一样,则要清楚当前排序字段的排序标志(↑↓)
21          if(sortHeader!=null)
22            sortHeader.Content=removeSortStateFlag(sortHeader.Content.ToString());
23          dir="asc";
24        }
25        sortFiled=_newsort;
26        //加上排序标志
27        header.Content=dir=="asc"?_newsort+"↑":_newsort+"↓";
28        //设置新的排序字段为当前排序字段
29        sortHeader=header;
30        BindGrid();
31        e.Handled=true;
32      }
33      else
34        e.Handled=false;
35    }

1 2  下一页

Tags:Silverlight 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接