2

我有一个这样定义的组合框(基本上):

<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 中显示的页面大小都不会发生任何变化。

我究竟做错了什么?

谢谢

4

2 回答 2

1

尝试将 设置ModeTwoWay

PageSize="{Binding Path=SelectedItem.Value, Mode=TwoWay, ElementName=pageViewSize}"
于 2011-12-12T19:34:19.983 回答
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}"/>
于 2012-01-03T10:04:03.227 回答