我有一个WPF应用程序使用TabControl绑定到MyTab类的集合。每个TabItem都有一个ListView绑定到MyTab类的Items属性。
我的问题是在任何ListView中向上或向下滚动都会影响所有其他ListView的位置。
XAML:
<Window>
<Window.Resources>
<DataTemplate x:Key="TabHeaderTemplate">
<TextBlock Text="{Binding Header}" />
</DataTemplate>
<DataTemplate x:Key="TabItemTemplate">
<ListView ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn Header="col1" DisplayMemberBinding="{Binding col1}" />
<GridViewColumn Header="col2" DisplayMemberBinding="{Binding col2}" />
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</Window.Resources>
<Grid>
<TabControl ItemsSource="{Binding Tabs}" ItemTemplate="{StaticResource TabHeaderTemplate}" ContentTemplate="{StaticResource TabItemTemplate}"/>
</Grid>
</Window>
代码:
public class MyTab
{
public string Header { get; set; }
public ObservableCollection<MyItem> Items { get; set; }
public MyTab(int count)
{
Header = count.ToString();
Items = new ObservableCollection<MyItem>();
for (var i = 0; i < count; i++)
Items.Add(new MyItem {col1 = i.ToString(), col2 = i.ToString()});
}
}
public class MyItem
{
public string col1 { get; set; }
public string col2 { get; set; }
}
public class MainViewModel
{
public ObservableCollection<MyTab> Tabs { get; set; }
public MainViewModel() { Tabs = new ObservableCollection<MyTab> {new MyTab(10), new MyTab(50)}; }
}
第1步:运行应用并选择第一个标签页
http://i53.tinypic.com/k06l2x.png
第2步:选择第二个标签并向下滚动
http://i52.tinypic.com/28j8un9.png
第3步:选择第一个标签,并观察ListView是否向下滚动
http://i54.tinypic.com/6iseuv.png
第4步:再次选择第二个标签,并观察ListView是否已向上滚动
http://i53.tinypic.com/2pr8qvp.png
有谁知道如何解决这个问题?
答案 0 :(得分:0)
这是一个与类似的东西相关的线程,它有一个演示文件(不确定它是否有效)。 希望这能帮助你朝着正确的方向前进。
http://www.eggheadcafe.com/community/aspnet/14/10043253/scrolling-in-a-listview.aspx
Object myItem = myList.Items [20]; myList.ScrollIntoView(myItem);
http://www.mvps.org/vbvision/_samples/Virtual_ListView_Demo.zip