我有一个像这样定义的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都没有任何反应。
我做错了什么?
由于
答案 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}"/>