1

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

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

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

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

这是它的样子: 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第四项中。

如果这在某种程度上是特定于机器的并且您无法重现,我将如何解决此问题以找到并消除原因?

4

1 回答 1

2

试着放

VirtualizingStackPanel.VirtualizationMode = "Standard"` 

在您的 FlipView 中。这应该停止回收。

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

根据评论更新

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

<FlipView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"></StackPanel>
     </ItemsPanelTemplate>
</FlipView.ItemsPanel>
于 2013-10-01T19:40:31.233 回答