Мое приложение использует 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; }
}
Любое понимание того, почему это происходит, будет оценено.