随笔 - 55  文章 - 15  trackbacks - 0
<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

      
         上一章我们了解了微软的方法,归根结底是要重写PrepareContainerForItemOverrid这个方法,最后将我们的ColumnSpanProperty同DataItem的ColumnSpan进行绑定,这样我们就可以在初始化DataItem的时候随意地改变一个Item的大小了。
          本章介绍另一种方法,这种方法的大体思路同上一方法类似也是要重写PrepareContainerForItemOverride这个方法,只是里面的做法不同。
         先上代码:
1 public ref class VariableSizedWrapGridView sealed : public Windows::UI::Xaml::Controls::GridView
2     {
3     protected:
4         virtual void PrepareContainerForItemOverride(Windows::UI::Xaml::DependencyObject^ element, Platform::Object^ item) override;
5     };

         注意到我们的类里面只有这么一个需要重写的方法。
         再来看看我们是如何重写该方法:
   
1 void VariableSizedWrapGridView::PrepareContainerForItemOverride(DependencyObject^ element, Platform::Object^ item)
2 {
3     auto viewMode = (DataItem^)(item);
4 
5     element->SetValue(VariableSizedWrapGrid::ColumnSpanProperty, viewMode->ColumnSpan);
6     element->SetValue(VariableSizedWrapGrid::RowSpanProperty, viewMode->RowSpan);
7     GridView::PrepareContainerForItemOverride(element, item);
8 }
        我们看到,我们不是使用的Binding,而是直接赋值,将DataItem::ColumnSpan这个属性直接赋值给 VariableSizedGridView的VariableSizedWrapGrid::ColumnSpanProperty。 我们同样只需要在DataItem初始化的时候设置好相应的ColumnSpan和RowSpan就可以实现不同尺寸的Item。

      这种方法比之之前微软的方法要简单许多,没有依赖属性。但是微软的方法的好处是,你可以选择你要绑定的属性。各种优缺点,大家可以酌情用之。
     
下期提示:如何在一个GridView中实现不同的DataTemplate,例如:

posted on 2012-10-14 18:26 Dino-Tech 阅读(1125) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理