WP8 - 如何显示UserControl以用作listPicker?

时间:2014-08-30 00:05:00

标签: c# xaml windows-phone-8 visual-studio-2013 nokia

我正在处理我的应用,我遇到了一个列表框问题(我知道我对XAML并不好):D

我实际上有一个RadListPicker(Telerik控件),我在我的一个页面中使用它,但我不喜欢弹出屏幕的布局与所有列表项,另一件困扰我的是当里面有很多物品时,向上和向下滚动以找到你正在寻找的物品真的很烦人。

所以我想我会添加一个JumpList而不是它。

这是我写的XAML(它只是一个带有布局的页面):

<!--JumpList Resources-->
<UserControl.Resources>
    <!--Item template-->
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel VerticalAlignment="Top">
            <TextBlock FontFamily="{StaticResource PhoneFontFamilySemiLight}" FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                Margin="3,0,0,10" Text="{Binding Item}" />
        </StackPanel>
    </DataTemplate>

    <!--Group Header-->
    <DataTemplate x:Key="GroupHeaderTemplate">
        <Border Background="Transparent" Padding="5">
            <Border Background="{StaticResource PhoneAccentBrush}" BorderBrush="{StaticResource PhoneAccentBrush}" BorderThickness="2" Width="62" 
                Height="62" Margin="0,0,18,0" HorizontalAlignment="Left">
                <TextBlock Text="{Binding Key}" Foreground="{StaticResource PhoneForegroundBrush}" FontSize="48" Padding="6" 
                    FontFamily="{StaticResource PhoneFontFamilySemiLight}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
            </Border>
        </Border>
    </DataTemplate>

    <!--Background-->
    <Controls:JumpListItemBackgroundConverter x:Key="BackgroundConverter"/>
    <Controls:JumpListItemForegroundConverter x:Key="ForegroundConverter"/>

    <!--Jump List-->
    <Style x:Key="JumpListTemplate" TargetType="Controls:LongListSelector">
        <Setter Property="GridCellSize"  Value="113,113"/>
        <Setter Property="LayoutMode" Value="Grid" />
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="{Binding Converter={StaticResource BackgroundConverter}}" Width="113" Height="113" Margin="6" >
                        <TextBlock Text="{Binding Key}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" FontSize="48" Padding="6" 
                            Foreground="{Binding Converter={StaticResource ForegroundConverter}}" VerticalAlignment="Center"/>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    </UserControl.Resources>


<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="100" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="20" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="1" Text="JumpList" VerticalAlignment="Bottom" Margin="5,0,0,20"
               FontSize="{StaticResource PhoneFontSizeLarge}"/>
    <Controls:LongListSelector 
        x:Name="LongJumpList"
                    JumpListStyle="{StaticResource JumpListTemplate}"
                    Background="Transparent"
                    GroupHeaderTemplate="{StaticResource GroupHeaderTemplate}"
                    ItemTemplate="{StaticResource ItemTemplate}"
                    LayoutMode="List"
                    IsGroupingEnabled="true"
                    HideEmptyGroups ="true"
                    Grid.Row="1" Grid.RowSpan="1"
                    Grid.Column="1" Grid.ColumnSpan="1"/>
</Grid>

在另一页中,我补充道:

<local:JumpListControl x:Name="myUserControl" Opacity="0"/>

现在,我想创建一个按钮并为显示带有jumpList的页面的点击添加一个事件处理程序,而不是使用listPicker,然后当用户选择列表中的一个项目时页面关闭。

我不想导航到另一个页面,我希望它是一个动画弹出窗口,就像使用listPicker一样。 我怎样才能做到这一点?我创建了一个按钮,而不是将控件的不透明度从0更改为1,反之亦然,但我注意到用户控件不起作用,它只是显示,我仍然可以看到它下面的其他页面。 我错过了什么?

感谢您的帮助! :)

塞尔吉奥

0 个答案:

没有答案