我遇到了FlipView
和绑定的巨大问题。我有一个FlipView
,每个项目都有一个TextBox
。当我在TextBox
中输入文字,然后翻到下一个项目时,TextBox.Text
值为空。下一个也是如此。但是在第四项(Index=3
)上,它会显示我在Index=0
上输入的文字。这将继续显示在第五和第六项上,但会再次显示在第七项(Index=6
)上。
因此,如果Index=0
我在TextBox
中输入 测试 ,我会看到 测试 < / strong>在第四和第七张幻灯片上(索引3和6)。这可以永远持续下去。
要解决问题,请按照上次输入的文字进行操作,然后在3的倍数上显示该问题。因此,如果我现在转到第二项(Index=1
)并输入 Test2 < / em> ,它会显示在Index=4
和Index=7
。
我在多个项目中尝试了这个,结果是一样的。我没有其他计算机可以试用它。在模拟器,本地机器和远程机器中运行它的结果是相同的。
这是它的样子:
对我来说,重新创建非常简单。只需添加一个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
。
如果这是某种特定于机器的并且您无法重现,我将如何进行故障排除以找到并消除原因?
答案 0 :(得分:2)
尝试放
VirtualizingStackPanel.VirtualizationMode = "Standard"`
FlipView中的。这应该会停止回收。
有关详细信息,请参阅此MSDN link:
根据评论进行更新
如果您可以避开VirtualizingStackPanel,以下内容可能对您有用:
<FlipView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</FlipView.ItemsPanel>