1

PageSize 値を持つ ComboBox を持つ Silverlight DataPager コントロール用に定義されたテンプレートがあります。

テンプレート:

<Style TargetType="sdk:DataPager">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="sdk:DataPager">
                <Grid x:Name="Root" Background="Transparent">
                    <Border BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" MinHeight="24" Padding="{TemplateBinding Padding}"             VerticalAlignment="Bottom">
                        <StackPanel HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Orientation="Horizontal" VerticalAlignment="Stretch">
                            <Button x:Name="FirstPageButton" BorderBrush="{StaticResource BorderBrushColor}" BorderThickness="1" Background="{StaticResource BackgroundColor}" Foreground="{StaticResource ForegroundColor}" HorizontalAlignment="Right" Height="20" Padding="1" Template="{StaticResource ButtonTemplate}" VerticalAlignment="Center" Width="20" Margin="0,0,3,0">
                                <Grid Height="9" Width="8">
                                    <Path Data="M0,1 L1,0 L1,2 Z" HorizontalAlignment="Right" Height="9" Stretch="Fill" Width="5" Fill="White"/>
                                    <Rectangle HorizontalAlignment="Left" Width="2" Fill="White"/>
                                </Grid>
                            </Button>
                            <Button x:Name="PreviousPageButton" BorderBrush="{StaticResource BorderBrushColor}" BorderThickness="1" Background="{StaticResource BackgroundColor}" Foreground="{StaticResource ForegroundColor}" HorizontalAlignment="Right" Height="20" Padding="1" Template="{StaticResource ButtonTemplate}" VerticalAlignment="Center" Width="20" Margin="0,0,3,0">
                                <Path Data="M0,1 L1,0 L1,2 Z" HorizontalAlignment="Center" Height="9" Stretch="Fill" Width="5" Fill="White"/>
                            </Button>
                            <Border x:Name="Separator1" BorderThickness="1,0,1,0" Margin="0, 3" Width="1" BorderBrush="#FF747474"/>
                            <StackPanel x:Name="NumericButtonPanel" Margin="1" Orientation="Horizontal"/>
                            <StackPanel x:Name="PageSizeDisplay" Orientation="Horizontal">


                                <ComboBox SelectedValue="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=PageSize, Mode=TwoWay}" 
                                          SelectedValuePath="Content" Width="60" Margin="3"
                                          BorderBrush="{TemplateBinding BorderBrush}" Foreground="{TemplateBinding Foreground}">
                                    <ComboBoxItem Content="10"></ComboBoxItem>
                                    <ComboBoxItem Content="20" IsSelected="True"></ComboBoxItem>
                                    <ComboBoxItem Content="50"></ComboBoxItem>
                                    <ComboBoxItem Content="100"></ComboBoxItem>
                                    <ComboBoxItem Content="200"></ComboBoxItem>
                                </ComboBox>


                            </StackPanel>
                            <StackPanel x:Name="PageDisplay" Orientation="Horizontal">
                                <TextBlock x:Name="CurrentPagePrefixTextBlock" Foreground="{TemplateBinding Foreground}" Margin="4,0,0,0" VerticalAlignment="Center" Width="Auto"/>
                                <TextBox x:Name="CurrentPageTextBox" BorderBrush="{TemplateBinding BorderBrush}" Foreground="{TemplateBinding Foreground}" Height="Auto" Margin="4,2,4,2" Style="{StaticResource TextBoxStyle1}" TextWrapping="Wrap" VerticalAlignment="Center" Width="40"/>
                                <TextBlock x:Name="CurrentPageSuffixTextBlock" Foreground="{TemplateBinding Foreground}" Margin="0,0,4,0" VerticalAlignment="Center" Width="Auto"/>
                            </StackPanel>
                            <Border x:Name="Separator2" BorderThickness="1,0,1,0" Margin="0,3" Width="1" BorderBrush="#FF747474"/>
                            <Button x:Name="NextPageButton" BorderBrush="{StaticResource BorderBrushColor}" BorderThickness="1" Background="{StaticResource BackgroundColor}" Foreground="{StaticResource ForegroundColor}" HorizontalAlignment="Right" Height="20" Padding="1" Template="{StaticResource ButtonTemplate}" VerticalAlignment="Center" Width="20" Margin="3,0">
                                <Path Data="M0,0 L1,1 L0,2 Z" HorizontalAlignment="Center" Height="9" Stretch="Fill" Width="5" Fill="White"/>
                            </Button>
                            <Button x:Name="LastPageButton" BorderBrush="{StaticResource BorderBrushColor}" BorderThickness="1" Background="{StaticResource BackgroundColor}" Foreground="{StaticResource ForegroundColor}" HorizontalAlignment="Right" Height="20" Padding="1" Template="{StaticResource ButtonTemplate}" VerticalAlignment="Center" Width="20">
                                <Grid Height="9" Width="8">
                                    <Path Data="M0,0 L1,1 L0,2 Z" HorizontalAlignment="Left" Height="9" Stretch="Fill" Width="5" Fill="White"/>
                                    <Rectangle HorizontalAlignment="Right" Width="2" Fill="White"/>
                                </Grid>
                            </Button>
                        </StackPanel>
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

使用法:

<sdk:DataPager x:Name="pager" Source="{Binding Path=ItemsSource, ElementName=myGrid}" PageSize="50" />

私の DataGrid は にバインドされていますがPagedCollectionView、それでもPageSize ComboBox正しい値が表示されません。(IsSelectedプロパティが設定されていない場合、選択された項目はありませんComboBox)

PageSizeのプロパティも設定しようとしましたがPagedCollectionView、どちらも役に立ちません。

私は何が間違っているのですか?

4

1 に答える 1

0

ComboBoxItem 値を int32 値にバインドしようとしています。

代わりにこれを試してください:

<ComboBox SelectedValue="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=PageSize, Mode=TwoWay}" 
Width="60" Margin="3"
BorderBrush="{TemplateBinding BorderBrush}" Foreground="{TemplateBinding Foreground}">

<sys:Int32>10</sys:Int32>
<sys:Int32>20</sys:Int32>
<sys:Int32>50</sys:Int32>

次の名前空間も追加します。

xmlns:sys="clr-namespace:System;assembly=mscorlib"
于 2012-09-08T14:22:20.390 に答える