2010-10-04 17 views
8

Mam datagrid na akordeonie, do którego programowo dodam elementy. Elementy nie mają problemu z dodawaniem, ale akordeon nie odświeża się do rozmiaru, który może wyświetlić całą zawartość datagridu. Jeśli przeciągnę po bokach datagridów, aby zmienić ich rozmiar, akordeon zmieni się poprawnie. Nie mogę tego zrobić automatycznie za pomocą kodu. Próbowałem InvalidateArrage i InvalidateMeasure na siatce lub akordeonie i próbowałem również zmienić szerokość lub wysokość kontrolek, ale nic nie działa przez kod. Próbowałem nawet metod Invalidate na LayoutRoot. Czy jest coś, co mógłbym zrobić, żeby kod odświeżał akordeon do odpowiedniego rozmiaru?Przerysowywanie akordeonu silverlight nie działa

+0

mam do czynienia z tym samym problem z 'ItemsControl' przez długi czas. Przysięgam, że próbowałem wszystkiego. Mam nadzieję, że na to odpowiemy. – Gabe

+1

Czy jest szansa, że ​​możesz opublikować trochę XAML, który odtwarza problem? –

+0

+1 do Jasona ... Naprawdę musisz podać swój XAML na takie problemy jak ten. W przeciwnym razie musimy zgadnąć, gdzie możesz się nie udać :) –

Odpowiedz

4

Mam ten sam problem, ale z ListBox w AccordionItem. I rozwiązać ten problem - umieścić DataGrid w Grid Control

<toolkit:Accordion.ContentTemplate> 
       <DataTemplate> 
        <Grid> 

         <DataGrid.../> 

        </Grid> 
       </DataTemplate> 
      </toolkit:Accordion.ContentTemplate> 

i trzeba zadzwonić UpdateLayout() metoda, gdy ItemsSource jest zmieniana (pozycja dodana)

private void ItemsSource_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
      { 
       yourAccordion.UpdateLayout(); 
      } 
Powiązane problemy