填充wp7 ListPicker

时间:2012-02-22 17:14:14

标签: windows-phone-7 silverlight-toolkit

我正在使用Microsoft示例,但进行了一些更改。我可以在选择列表中填充数据,但在选择项目后,它不会将其放回到选定项目中。我不确定是什么问题。我试图用查询替换sys:string数据。我做错了什么?

<phone:PhoneApplicationPage 
x:Class="WO_App.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:sys="clr-namespace:System;assembly=mscorlib"    
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"


FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True">

<Grid x:Name="LayoutRoot" Background="Transparent">

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
        <TextBlock x:Name="PageTitle" Text="ListPicker" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <toolkit:ListPicker x:Name="TestList" Header="Select a part" ExpansionMode="FullscreenOnly">

            <!--This is the data I am trying to replace with binding
            <sys:String>1</sys:String>
            <sys:String>2</sys:String>
            <sys:String>3</sys:String>
            <sys:String>4</sys:String>
            <sys:String>5</sys:String>
            <sys:String>6</sys:String>
            <sys:String>7</sys:String>
            <sys:String>8</sys:String>
            <sys:String>9</sys:String>
            <sys:String>10</sys:String>
            <sys:String>11</sys:String>
            <sys:String>12</sys:String>
            <sys:String>13</sys:String>-->

            <toolkit:ListPicker.FullModeItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="16 21 0 20">
                        <TextBlock Text="{Binding Num}"
                                   Margin="0 0 0 0"
                                   FontSize="43" 
                                   FontFamily="{StaticResource PhoneFontFamilyLight}"/>
                    </StackPanel>
                </DataTemplate>
            </toolkit:ListPicker.FullModeItemTemplate>
        </toolkit:ListPicker>
        <Button Content="Chosen" Height="72" HorizontalAlignment="Left" Margin="284,179,0,0" Name="Button1" VerticalAlignment="Top" Width="160" />
    </Grid>

</Grid>             

这是VB代码。

Partial Public Class Page1
Inherits PhoneApplicationPage

Public Sub New()
    InitializeComponent()
End Sub

Private Sub PhoneApplicationPage_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded

    Dim source As New List(Of Numbers)

    For x = 1 To 15
        source.Add(New Numbers(x))
    Next x

    Me.TestList.ItemsSource = source

End Sub

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click

    Dim selectedItem As String = Me.TestList.SelectedItem.ToString
    Dim selectedIndex As String = Me.TestList.SelectedIndex

    MessageBox.Show("you chose " & selectedItem & vbCrLf & selectedIndex)
End Sub

Public Class Numbers
    Public Property Num() As Integer
        Get
            Return m_Num
        End Get
        Set(value As Integer)
            m_Num = value
        End Set
    End Property
    Private m_Num As Integer

    Public Sub New(myNum As Integer)
        Me.Num = myNum
    End Sub

End Class


End Class

1 个答案:

答案 0 :(得分:0)

我认为您还需要使用项目模板:

 <toolkit:ListPicker.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Num}"                                   
                               FontSize="28" 
                               FontFamily="{StaticResource PhoneFontFamilyLight}"/>
                </StackPanel>
            </DataTemplate>
        </toolkit:ListPicker.temTemplate>