上一章我們了解了微軟的方法,歸根結(jié)底是要重寫PrepareContainerForItemOverrid這個(gè)方法,最后將我們的ColumnSpanProperty同DataItem的ColumnSpan進(jìn)行綁定,這樣我們就可以在初始化DataItem的時(shí)候隨意地改變一個(gè)Item的大小了。
本章介紹另一種方法,這種方法的大體思路同上一方法類似也是要重寫PrepareContainerForItemOverride這個(gè)方法,只是里面的做法不同。
先上代碼:
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 };
注意到我們的類里面只有這么一個(gè)需要重寫的方法。
再來(lái)看看我們是如何重寫該方法:
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這個(gè)屬性直接賦值給 VariableSizedGridView的VariableSizedWrapGrid::ColumnSpanProperty。 我們同樣只需要在DataItem初始化的時(shí)候設(shè)置好相應(yīng)的ColumnSpan和RowSpan就可以實(shí)現(xiàn)不同尺寸的Item。
這種方法比之之前微軟的方法要簡(jiǎn)單許多,沒(méi)有依賴屬性。但是微軟的方法的好處是,你可以選擇你要綁定的屬性。各種優(yōu)缺點(diǎn),大家可以酌情用之。
下期提示:如何在一個(gè)GridView中實(shí)現(xiàn)不同的DataTemplate

,例如:
posted on 2012-10-14 18:26
Dino-Tech 閱讀(1140)
評(píng)論(0) 編輯 收藏 引用