【发布时间】:2018-11-02 23:34:44
【问题描述】:
我的应用程序使用 TabControl(项目绑定到集合),其中每个选项卡都有一个数据网格(其行绑定到选项卡模型上的集合)。
当我在其中一个选项卡上滚动视图时,相同的滚动操作将应用于所有其他选项卡。我希望每个选项卡分别跟踪自己的滚动值,因此在它们之间切换时不会丢失位置。
我已将其简化为显示相同行为的最小程序:
Xaml:
<Grid>
<TabControl ItemsSource="{Binding Tabs}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
<TabControl.ContentTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Lines}" ></DataGrid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
C#:
public MainWindow()
{
InitializeComponent();
DataContext = this;
for (int i = 0; i < 3; i++)
{
var tab = new Tab();
for (int j = 0; j < 100; j++)
tab.Lines.Add(new Line { Value = (i * 100 + j).ToString() });
Tabs.Add(tab);
}
}
public class Tab
{
public ObservableCollection<Line> Lines { get; set; } = new ObservableCollection<Line>();
}
public class Line
{
public string Value { get; set; }
}
任何关于它为什么这样做的见解将不胜感激。
【问题讨论】: