scrollbar not working when scrolling down it goes back up in c#

Viewed 42

I have a screen in xaml that contains a TabControl, this is divided into 2 tabs and each tab has a dataGrid inside. Due to the amount of data that is handled in the datagrid, the use of scrollBar is required and the client's request is that when selecting a row in a tab, it must be selected in tab 2 and that the scrollbar go down to the position where it is. the selected row, for this I modified the codeBehind with the following code. The problem that it generates for me is that when I want to lower the scrollbar in tab 1 when I have already selected a row, the scrollbar always returns to the position of the selected row without allowing it to go down or up as far as I want. Please help

XAML.cs

private void UexIndividuos_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if((DataContext as VistaTabularViewModel).SelectedUEX != null)
    {
        var uex = (DataContext as VistaTabularViewModel).SelectedUEX;
        //tabIndividuos.IsSelected = true;
        DG_Individuos.SelectedItem = uex;
        DG_Individuos.UpdateLayout();
        DG_Individuos.ScrollIntoView(uex);

    }

}

private void UexMediciones_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if ((DataContext as VistaTabularViewModel).FilaMedicionSeleccionada != null)
    {
        var uex = (DataContext as VistaTabularViewModel).FilaMedicionSeleccionada;
        DG_Mediciones.SelectedItem = uex;
        DG_Mediciones.UpdateLayout();
        DG_Mediciones.ScrollIntoView(uex);

    }

}

Codigo XAML

<common:DialogWindowBase
    x:Class="Biocap.View.VistaTabular.VistaTabularView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
    xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
    xmlns:common="clr-namespace:Biocap.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
    xmlns:local="clr-namespace:Biocap.View.VistaTabular"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Name="VistaTabularEnsayoChildWindow"
    Title="{Binding TituloPantalla, UpdateSourceTrigger=PropertyChanged}"
    Dialog:DialogParticipation.Register="{Binding}"
    d:DesignHeight="450"
    d:DesignWidth="800"
    CloseButtonCommand="{Binding CloseButtonCommand}"
    CloseByEscape="False"
    ShowCloseButton="True"
    mc:Ignorable="d">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded" SourceObject="{Binding ElementName=VistaTabularEnsayoChildWindow}">
            <i:InvokeCommandAction Command="{Binding MantenedorLoadedCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Controls:MetroContentControl
            Grid.RowSpan="9"
            VerticalAlignment="Top"
            Panel.ZIndex="99"
            Content="{Binding ErrorViewModel}" />
        <TabControl Width="1100" Height="570">
            <TabItem Header="{Binding HeaderTabEnsayo}" Name="tabIndividuos">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="auto" />
                    </Grid.RowDefinitions>
                    <GroupBox Margin="5" Header="Individuos" >
                        <DataGrid
                            x:Name="DG_Individuos"
                            AutoGenerateColumns="True"
                            AutoGeneratingColumn="DataGridIndividuos_AutoGeneratingColumn"
                            CanUserAddRows="False"
                            ItemsSource="{Binding IndividuosCollectionView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectedItem="{Binding SelectedUEX, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectionMode="Extended"
                            ScrollViewer.CanContentScroll="True"
                            VirtualizingPanel.IsVirtualizing="True"
                            VirtualizingPanel.ScrollUnit="Pixel"
                            VirtualizingPanel.IsContainerVirtualizable="True"
                            VirtualizingPanel.VirtualizationMode="Recycling"
                            IsReadOnly="{Binding Guardar_uex, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectionUnit="FullRow" SelectionChanged="UexIndividuos_SelectionChanged">

                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="BeginningEdit">
                                    <i:InvokeCommandAction Command="{Binding CeldaBeginningEdit}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="CellEditEnding">
                                    <i:InvokeCommandAction Command="{Binding IndividuosCellEditEnding}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </DataGrid>
                    </GroupBox>
                    <Grid Grid.Row="1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Button
                            Margin="5"
                            
                            Command="{Binding AgregarUnidadExperimental}"
                            Content="Agregar unidad experimental" />
                        <Button
                            Grid.Column="1"
                            Margin="5"
                            Command="{Binding EliminarUnidadExperimental}"
                            CommandParameter="{Binding ElementName=DG_Individuos}"
                            Content="Eliminar unidades experimentales seleccionadas"
                            ToolTip="Eliminar unidad experimental nueva si aún no se han guardado los cambios" />
                    </Grid>
                    <Grid Grid.Row="2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Button
                            Grid.Column="0"
                            Margin="5"
                            Background="{StaticResource MahApps.Brushes.Accent}"
                            Command="{Binding GuardarCambiosIndividuos}"
                            CommandParameter="{Binding ElementName=DG_Individuos}"
                            Content="Guardar cambios individuos" />
                        <Button
                            Grid.Column="1"
                            Margin="5"
                            Command="{Binding DescartarYSalirCommand}"
                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type common:DialogWindowBase}}}"
                            Content="Cerrar ventana" />
                    </Grid>
                </Grid>
            </TabItem>
            <TabItem Header="Mediciones" Name="tabMediciones">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition Height="auto" />
                        <RowDefinition />
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="auto" />
                    </Grid.RowDefinitions>
                    <GroupBox Margin="5" Header="Sesiones de medición">
                        <DataGrid
                            x:Name="DG_SesionesMedicion"
                            AutoGenerateColumns="True"
                            AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"
                            CanUserAddRows="False"
                            ItemsSource="{Binding ListaMedicionesResumenCollectionView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectedItem="{Binding MedicionResumenSeleccionada, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                            SelectedIndex="{Binding SelectFirstItem,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                            SelectionMode="Single"
                            SelectionUnit="FullRow">
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="BeginningEdit">
                                    <i:InvokeCommandAction Command="{Binding CeldaBeginningEdit}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="CellEditEnding">
                                    <i:InvokeCommandAction Command="{Binding MedicionResumenCellEditEnding}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </DataGrid>
                    </GroupBox>
                    <Grid Grid.Row="1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Button
                            Margin="5"
                            Command="{Binding AgregarMedicionResumen}"
                            Content="Agregar sesión de medición" />
                        <Button
                            Grid.Column="1"
                            Margin="5"
                            Command="{Binding EliminarMedicionResumenVacia}"
                            Content="Eliminar sesión de medición vacía" />
                    </Grid>
                    <GroupBox
                        Grid.Row="2"
                        Margin="5"
                        Header="Mediciones">
                        <DataGrid
                            x:Name="DG_Mediciones"
                            AutoGenerateColumns="True"
                            AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"
                            CanUserAddRows="False"
                            CanUserReorderColumns="False"
                            ScrollViewer.CanContentScroll="True"
                            VirtualizingPanel.IsVirtualizing="True"
                            VirtualizingPanel.ScrollUnit="Pixel"
                            VirtualizingPanel.IsContainerVirtualizable="True"
                            VirtualizingPanel.VirtualizationMode="Recycling"
                            ItemsSource="{Binding MedicionesCollectionView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectedItem="{Binding FilaMedicionSeleccionada, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            SelectionMode="Extended" SelectionChanged="UexMediciones_SelectionChanged">
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="BeginningEdit">
                                    <i:InvokeCommandAction Command="{Binding CeldaBeginningEdit}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="CellEditEnding">
                                    <i:InvokeCommandAction Command="{Binding MedicionesCellEditEnding}" PassEventArgsToCommand="True" />
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </DataGrid>
                    </GroupBox>
                    <Grid Grid.Row="3">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Button
                            Margin="5"
                            Command="{Binding EliminarMedicionSeleccionada}"
                            CommandParameter="{Binding ElementName=DG_Mediciones}"
                            Content="Eliminar fila detalle medición seleccionada" />
                        <Button
                            Grid.Column="1"
                            Margin="5"
                            Command="{Binding ActualizarVariablesCalculadas}"
                            Content="Actualizar V. Calculadas" />
                    </Grid>
                    <Grid Grid.Row="4">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Button
                            Margin="5"
                            Background="{StaticResource MahApps.Brushes.Accent}"
                            Command="{Binding GuardarCambiosMediciones}"
                            CommandParameter="{Binding ElementName=DG_Mediciones}"
                            Content="Guardar cambios mediciones" />
                        <Button
                            Grid.Column="1"
                            Margin="5"
                            Command="{Binding DescartarYSalirCommand}"
                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type common:DialogWindowBase}}}"
                            Content="Cerrar ventana" />
                    </Grid>
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>
</common:DialogWindowBase>
0 Answers
Related