4
仮想化が有効なListViewコントロールに奇妙な問題があります。私は問題を再現するために非常に小さなパイロットアプリを作成しました。リストビューのいくつかのテキストボックスに何かを入力してからスクロールダウンすると、数ページ後に、入力された値が以下のテキストボックスで繰り返されます。ここでリサイクルモードでListView仮想化の値が繰り返されます
は、ウィンドウのXAMLです:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="mainGrid">
<ListView ItemsSource="{Binding Path=DemoList}" >
<VirtualizingStackPanel.IsVirtualizing>
True
</VirtualizingStackPanel.IsVirtualizing>
<VirtualizingStackPanel.VirtualizationMode>
Recycling
</VirtualizingStackPanel.VirtualizationMode>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBox MinHeight="20" MinWidth="200" Margin="4"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Window>
そしてビハインドコード:
namespace WpfApplication3
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
demolist a = new demolist();
mainGrid.DataContext = a;
}
}
public class demolist
{
public demolist()
{
DemoList = new List<string>();
for (int i = 0; i <= 5000; i++)
{
DemoList.Add("sss");
}
}
public List<string> DemoList { get; set; }
}
}
そして問題についての画面キャプチャ: http://kepfeltoltes.hu/120228/Capture1_www.kepfeltoltes.hu_.png
は、任意のオプションがありますこの問題を解決するには?私はそれがリサイクルモードに関連していると思うが、これは正常な動作ではないはずだ。確かに奇妙な効果だが、リサイクルモードプラスあなたは何にもTextBox.Textプロパティを結合していないという事実に起因すると思われます、事前に
おかげで、
イシュト
感謝。あなたのコードは正しく実行されます。つまり、リサイクルモードはコントロールのすべてをバインドする場合にのみ使用できます。 – kexx