DataGrid odskočí po DataTable.AcceptChanges()   otázka

VB.NET, WPF

Zdravím,

mám takový problém. Mám WPF aplikaci kde mám DataGrid s řádově stovkou řádků rozdělených pomocí skupin. Po kliknutí na řádek se zobrazí RowDetailTemplate kde je další DataGrid. Když v tomto druhé DataGridu něco změním a v události RowEdittingEnding změnu uložím do DataTable pomocí AcceptChanges tak se stane to že sice v hlavním datagridu zůstane vybraný řádek stále vybraný, ale uskočí mi posuvník toho DataGridu (pokud jsem byl třeba někde uprostřed). Stejně tak když si skryju nějakou skupinu a zavolám libovolně AcceptChange pro DataTable tak se mi skupina zase zobrazí.

Zřejmě se provede něco jako reload toho DataGridu.

Nemáte někdo tušení jak tomu zabránit?

Dík moc za tipy Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Něco podobného jsem řešil v Silverlight, ale nevím jestli Vám to pomůže tady.

Tam jsem to vyřešil tak, že jsem vypnul interní scroling DataGridu a do jeho stylu jsem umístil jiný ScrollViewer. Toto řešení se ovšem nehodí, pokud bude v gridu větší objem řádků, protože do potlačí jejich virtualizaci.

V XAML to vypadá nějak takto:

<Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>

A na místo kde je DataGridRowsPresenter přidat ScrollViewer, u mě místo:

<dataprimitives:DataGridRowsPresenter x:Name="RowsPresenter" Grid.ColumnSpan="2" Grid.Row="2"/>

je:

<ScrollViewer x:Name="NoVirtualizationScrollViewer" Grid.ColumnSpan="2" Grid.Row="2" Padding="0" BorderThickness="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
    <dataprimitives:DataGridRowsPresenter x:Name="RowsPresenter"/>
</ScrollViewer

>

Ve WPF by mohl styl být podobný.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback