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

を に設定してみてModeくださいTwoWay

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、値がコンバーターのパラメーターと等しいかどうかをチェックするカスタム双方向コンバーターを使用して、View Model の値にデータ バインドすることです。

これが私の RadioButtons の 1 つからの例です。

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 に答える