Привязка DataPager к ComboBox? - PullRequest
2 голосов
/ 12 декабря 2011

У меня есть comboxbox, определенный так (в основном):

<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>

Теперь я хотел бы, чтобы PageSize моего DataPager (который является источником для DataGrid) был привязан к SelectedItem.Value этого ComboBox (или это SelectedValue?):

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

Это, к сожалению, не работает. Исходный размер страницы не равен 10. И всякий раз, когда я менял выбор в ComboBox, с отображаемым размером страниц в DataGrid ничего не происходит.

Что я делаю не так?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 января 2012

Из документации DataPager.PageSize:

Источник обычно реализует интерфейс IPagedCollectionView.В этом случае PageSize получает или устанавливает IPagedCollectionView.PageSize для IPagedCollectionView.

Если источником является коллекция, которая реализует IEnumerable, но не IPagedCollectionView, DataPager игнорирует PageSize.

Может быть, ваш источник данных не поддерживает должным образом PageSize?


РЕДАКТИРОВАТЬ: В настоящее время у меня та же проблема, что и у вас У меня была та же проблема, что и у вас, она была исправлена ​​с помощью ответа @ devdigital.

Я использую привязку данных вместо привязки элементов, на переключателях + настраиваемый преобразователь вместо комбинированного, но он применяется аналогичным образом.

Я занимаюсь привязкой данных IsChecked до значения в моей модели просмотра, с пользовательским двусторонним преобразователем, проверяющим, равно ли значение параметру преобразователя.

Итак, вот пример из одной из моих кнопок RadioButton:

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

и ваш DataPager, модифицированный:

<DataPager PageSize="{Binding MyBindedValue, Mode=TwoWay}" Source="{Binding PageView}"/>
1 голос
/ 12 декабря 2011

Попробуйте установить Mode на TwoWay.

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