FlipView和TextBox的奇怪绑定问题

时间:2013-10-01 18:13:24

标签: windows-8 winrt-xaml

我遇到了FlipView和绑定的巨大问题。我有一个FlipView,每个项目都有一个TextBox。当我在TextBox中输入文字,然后翻到下一个项目时,TextBox.Text值为空。下一个也是如此。但是在第四项(Index=3)上,它会显示我在Index=0上输入的文字。这将继续显示在第五和第六项上,但会再次显示在第七项(Index=6)上。

因此,如果Index=0我在TextBox中输入 测试 ,我会看到 测试 < / strong>在第四和第七张幻灯片上(索引3和6)。这可以永远持续下去。

要解决问题,请按照上次输入的文字进行操作,然后在3的倍数上显示该问题。因此,如果我现在转到第二项(Index=1)并输入 Test2 < / em> ,它会显示在Index=4Index=7

我在多个项目中尝试了这个,结果是一样的。我没有其他计算机可以试用它。在模拟器,本地机器和远程机器中运行它的结果是相同的。

这是它的样子: binding error issue in flipview

对我来说,重新创建非常简单。只需添加一个BasicPage,然后添加到网格中的该页面添加:

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

LoadState中,添加:

Dim d As New ObservableCollection(Of String) From {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
        TabFlipView.ItemsSource = d

然后运行它。在第一个TextBox类型中输入一些文字。翻到第4项。您刚在第一个项目中输入的文字位于第四个项目的TextBox

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

1 个答案:

答案 0 :(得分:2)

尝试放

VirtualizingStackPanel.VirtualizationMode = "Standard"` 
FlipView中的

。这应该会停止回收。

有关详细信息,请参阅此MSDN link

根据评论进行更新

如果您可以避开VirtualizingStackPanel,以下内容可能对您有用:

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