Monday, August 20, 2012

Silverlight 4/5 DataPager Template PageSize ComboBox

Silverlight 4/5 DataPager Template PageSize ComboBox

I have a Template defined for Silverlight DataPager control with a CombboBox with PageSize values

Template:

<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> 

Usage:

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

My DataGrid is bound to a PagedCollectionView, but still the PageSize ComboBox doesn't display the correct value. (if IsSelected property is not set, there is no selected item in the ComboBox)

I have also tried setting the PageSize property of the PagedCollectionView, that doesn't help either.

Any idea what am I doing wrong?

Answers & Comments...




No comments:

Post a Comment

Send us your comment related to the topic mentioned on the blog