2011-12-12 227 views
2

我有這樣的(基本上)定義的comboxbox:將DataPager綁定到ComboBox?

<ComboBox x:Name="pageViewSize"> 
    <ComboBox.Items> 
     <ComboBoxItem IsSelected="True">5</ComboBoxItem> 
     <ComboBoxItem>10</ComboBoxItem> 
     <ComboBoxItem>20</ComboBoxItem> 
     <ComboBoxItem>30</ComboBoxItem> 
     <ComboBoxItem>50</ComboBoxItem> 
     <ComboBoxItem>100</ComboBoxItem> 
    </ComboBox.Items> 
</ComboBox> 

現在,我想我的DataPager的的每頁(這是源到DataGrid)被綁定到ComboBox的SelectedItem.Value(或者是它的SelectedValue? ):

<DataPager PageSize="{Binding Path=SelectedItem.Value, ElementName=pageViewSize}" Source="{Binding PageView}"/> 

不幸的是,這是行不通的。初始頁面大小不是10.每當我在ComboBox中更改選擇內容時,DataGrid中顯示的頁面大小都不會發生任何變化。

我在做什麼錯?

感謝

回答

1

從DataPager.PageSize文檔:

源通常實現IPagedCollectionView接口。在這種情況下,PageSize獲取或設置IPagedCollectionView的IPagedCollectionView.PageSize。

如果源是實現IEnumerable但不是IPagedCollectionView的集合,則DataPager將忽略PageSize。

也許你的數據源不能正確支持PageSize?


編輯: 我現在有同樣的問題,因爲你 我有同樣的問題,因爲你,它是固定使用@ devdigital的答案。

我使用數據綁定而不是單元綁定,單選按鈕+自定義轉換器而不是組合,但它以相同的方式應用。

我在做什麼是數據綁定IsChecked到我的視圖模型中的值,與自定義雙向轉換器檢查值是否等於轉換器的參數。

因此,這裏是從我的單選按鈕的一個例子:

IsChecked="{Binding MyBindedValue, Converter={StaticResource EqualStringConverter}, ConverterParameter=5, Mode=TwoWay}" 

和你DataPager,修改:

<DataPager PageSize="{Binding MyBindedValue, Mode=TwoWay}" Source="{Binding PageView}"/> 
1

嘗試將ModeTwoWay

PageSize="{Binding Path=SelectedItem.Value, Mode=TwoWay, ElementName=pageViewSize}" 
+0

哼。不工作仍然。 – AlvinfromDiaspar

+0

你能爲你的組合框顯示代碼嗎? – devdigital

+0

我更新了原來的帖子。出於某種原因,組合框代碼並未出現在最後的帖子中。奇怪的。 – AlvinfromDiaspar