Windows 8 FlipView和TextBox存在奇怪的绑定问题

Windows 8 FlipView和TextBox存在奇怪的绑定问题,windows-8,winrt-xaml,Windows 8,Winrt Xaml,我在FlipView和绑定方面遇到了一个大问题。我有一个FlipView,每个项目上都有一个文本框。当我在文本框中输入文本,然后切换到下一项时,文本框.text值为空。下一个也是。但是在第四项(Index=3)上,它显示了我在Index=0上键入的文本。这继续不会显示在第五和第六项上,但会再次显示在第七项上(Index=6) 因此,如果启用Index=0I在文本框中键入Test,我会在第四张和第七张幻灯片上看到Test(索引3和6)。这种情况可以永远持续下去 要使问题复杂化,它会跟随最后输入的文

我在
FlipView
和绑定方面遇到了一个大问题。我有一个
FlipView
,每个项目上都有一个
文本框。当我在
文本框中输入文本,然后切换到下一项时,
文本框.text
值为空。下一个也是。但是在第四项(
Index=3
)上,它显示了我在
Index=0
上键入的文本。这继续不会显示在第五和第六项上,但会再次显示在第七项上(
Index=6

因此,如果启用
Index=0
I在
文本框中键入Test,我会在第四张和第七张幻灯片上看到Test(索引3和6)。这种情况可以永远持续下去

要使问题复杂化,它会跟随最后输入的文本,然后以3的倍数显示该文本。因此,如果我现在转到第二项(
Index=1
)并键入Test2,它将出现在
Index=4
Index=7

我在多个项目中尝试过这个方法,结果是一样的。我没有另一台可以试一试的电脑。在模拟器、本地机器和远程机器上运行它的结果是相同的

下面是它的样子:

对我来说,这真的很容易重现。只需添加一个基本页面,然后在网格中的该页面添加:

<FlipView Grid.Column="1" Grid.Row="1" Margin="100,0,50,0" x:Name="TabFlipView">
    <FlipView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <TextBox  Width="400" Height="100" VerticalContentAlignment="Bottom"  />
                <TextBlock Text="{Binding}"/>
            </StackPanel>
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>
然后运行它。在第一个
文本框中键入一些文本。翻到第四项。您刚才在第一项中键入的文本位于第四项的
文本框中

如果这是某种特定于机器的问题,而您无法重现,我将如何对此进行故障排除以找到并消除原因?

尝试将

VirtualizingStackPanel.VirtualizationMode = "Standard"` 
在您的FlipView中。这应该停止回收

有关更多信息,请参见此:

根据评论进行更新

如果您可以避免使用VirtualzingStackPanel,以下方法可能适用于您:

<FlipView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"></StackPanel>
     </ItemsPanelTemplate>
</FlipView.ItemsPanel>


这是可行的,但不幸的是,它会在返回任何给定的
文本框时清除输入的文本。是的,这是一个缺点,因为它每次都从头开始重新创建面板。一种解决方法是在
模式=双向
中绑定
.Text
。另一种方法是,如果您的项目数量有限(因为可能会影响性能),则不要使用VirtualzingStackPanel,而是在“FlipView”中使用编辑过的代码。然而,我不确定8.1是如何运行的——这个问题在这种环境下可能已经得到了解决。YMMV,刚在没有面板的情况下试过。完美,正是我所需要的。在8.1中似乎也没有固定。
<FlipView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"></StackPanel>
     </ItemsPanelTemplate>
</FlipView.ItemsPanel>