将DataPager绑定到ComboBox?

时间:2011-12-12 19:23:48

标签: silverlight xaml data-binding datapager elementname

我有一个像这样定义的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>

现在我希望我的DataPager的PageSize(它是DataGrid的源代码)绑定到这个ComboBox的SelectedItem.Value(或者它是SelectedValue?):

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

遗憾的是,这不起作用。初始页面大小不是10.每当我更改ComboBox中的选择时,DataGrid中显示的pagesize都没有任何反应。

我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

尝试将Mode设置为TwoWay

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

答案 1 :(得分:1)

来自DataPager.PageSize文档:

  

源通常实现IPagedCollectionView接口。在这种情况下,PageSize获取或设置IPagedCollectionView的IPagedCollectionView.PageSize。

     

如果源是实现IEnumerable但不是IPagedCollectionView的集合,则DataPager会忽略PageSize。

也许您的数据源不能正确支持PageSize?


编辑: 我目前遇到与您相同的问题我遇到了与您相同的问题,使用@ devdigital的答案解决了这个问题。

我正在使用数据绑定而不是元素绑定,在单选按钮+自定义转换器而不是组合,但它以相同的方式应用。

我正在做的是将数据绑定IsChecked到我的视图模型中的值,使用自定义双向转换器检查值是否等于转换器的参数。

所以这是我的一个RadioButtons的例子:

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

您的DataPager,已修改:

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