XAML - ListPicker奇怪的行为

时间:2013-08-21 14:42:16

标签: c# xaml windows-phone-7 windows-phone-8 listpicker

我在使用Windows Phone Toolkit中的ListPicker时遇到了困难。

ListPicker在Register Page:

中声明如下
<toolkit:ListPicker ExpansionMode="ExpansionAllowed" 
                                        FullModeHeader="Countries" 
                                        Template="{StaticResource ListPickerControlTemplate}"
                                        FullModeItemTemplate="{StaticResource ListPickerFullItemTemplate}"
                                        ItemsSource="{Binding CountryList}"
                                        SelectedItem="{Binding SelectedCountry}" />

一切正常,但如果我进入listpicker的完整模式并选择一个项目,页面上的每个其他TextBox(例如电子邮件,密码等)现在都有一个空内容,甚至没有水印提示再显示出来。 我正在使用Toolkit中的PhoneTextBoxes:

                <StackPanel>
                    <!-- name -->
                    <toolkit:PhoneTextBox Hint="firstname" Style="{StaticResource TransparentToolkitTextBoxStyle}" Text="{Binding FirstName}"/>
                    <toolkit:PhoneTextBox Hint="lastname" Style="{StaticResource TransparentToolkitTextBoxStyle}" Text="{Binding LastName}"/>
                    <!-- email -->
                    <toolkit:PhoneTextBox Hint="email" Style="{StaticResource TransparentToolkitTextBoxStyle}" Text="{Binding Email}"/>
                </StackPanel>

所有这些都绑定到ViewModel。知道文本丢失的原因吗?

有时在完整模式下,ListPicker也会冻结,我必须按后退键再试一次......

1 个答案:

答案 0 :(得分:2)

您没有绑定ListPicker ItemTemplate。像这样绑定它

<toolkit:ListPicker.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <toolkit:PhoneTextBox Hint="firstname" Style="{StaticResource TransparentToolkitTextBoxStyle}" Text="{Binding FirstName}"/>
        </StackPanel>
    </DataTemplate>
</toolkit:ListPicker.ItemTemplate>

确保您没有在OnNavigatedTo方法中设置任何文本框。如果是这样,你的TextBox将再次重置。 因此,不要在该方法中设置任何TextBox。