0

我已使用此 XAML 将一些项目数据绑定到我的 listView:

        <ListView x:Name="itemListView" ItemsSource="{Binding}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" >
                        <Slider Value="{Binding Intensity}" Width="300" Tag="{Binding Name}" />        
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

而这个 C# 代码:

        public static ObservableCollection<PoliticalRegion> GetRegions()
        {
            ObservableCollection<PoliticalRegion> politicalRegions = new ObservableCollection<PoliticalRegion>()
                {
                    new PoliticalRegion() {Name = "Algeria", Intensity = 0},
                    new PoliticalRegion() {Name = "Angola", Intensity = 0},
                    new PoliticalRegion() {Name = "Benin", Intensity = 0},
                    new PoliticalRegion() {Name = "Chad", Intensity = 0},
                    new PoliticalRegion() {Name = "Cote_d_Ivoire", Intensity = 0},
                    new PoliticalRegion() {Name = "Djibouti", Intensity = 0},
                    new PoliticalRegion() {Name = "Egypt", Intensity = 0},
                };
            return politicalRegions;
        }
       itemListView.DataContext = GetRegions();

当我运行它并移动一些滑块时,其他一些滑块会自行偶尔移动。为什么是这样??

4

1 回答 1

0

虚拟化 ItemContainers 的 ListView 导致了问题。我可以通过将 ListView 放在 ScrollViewer 中来解决这个问题,从而禁用 ListView 的虚拟化。listView 项目并不多,因此对性能的影响很小。

这是更新的 XAML。

<ScrollViewer>
    <ListView x:Name="itemListView" ItemsSource="{Binding}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <Slider Value="{Binding Intensity}" Width="300" Tag="{Binding Name}" />        
                    <TextBlock Text="{Binding Name}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>
于 2013-07-21T12:05:05.083 回答