2016-04-28 8 views
0

Я добавил VirtualizingStackPanel в свой datagrid для записей нагрузки по требованию, чтобы избавиться от слишком длительного времени загрузки, чтобы отобразить все записи.Почему VirtualizingStackPanel.IsVirtualizing в Silverlight datagrid выбрасывает исключение?

<sdk:DataGrid VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True" AutoGenerateColumns="False" 
          HorizontalAlignment="Center" Name="dgrGrid" Width="430" Height="270" Grid.Row="1" Margin="10,10,10,10" Loaded="dgrGrid_Loaded"> 

, но когда я попытался загрузить данные на сетке, получил эту ошибку ... может кто-то мне точку, где, чтобы исправить эту ошибку? заранее спасибо.

{System.Windows.Markup.XamlParseException: Установить свойства 'System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing' бросил исключение. [Line: 37 Position: 123] ---> System.NotSupportedException: не удается установить свойство только для чтения 'System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing'. на MS.Internal.XamlMemberInfo.SetValue (целевого объекта, значение объекта) в MS.Internal.XamlManagedRuntimeRPInvokes.SetValue (XamlTypeToken inType, XamlQualifiedObject & inObj, XamlPropertyToken inProperty, XamlQualifiedObject & inValue) --- Конец внутренней трассировки стека исключений ---

ответ

0

Вы должны удалить VirtualizingStackPanel.IsVirtualizing="True" как сообщение об исключении говорится, что это read-only property. В SL datagrid уже используется виртуализация для оптимизации производительности, поэтому вам просто нужно установить режим виртуализации, который вы хотите использовать.

Ваш DataGrid будет выглядеть ...

<sdk:DataGrid 
    VirtualizingStackPanel.VirtualizationMode="Recycling" 
    AutoGenerateColumns="False" 
    HorizontalAlignment="Center" 
    Name="dgrGrid" 
    Width="430" 
    Height="270" 
    Grid.Row="1" 
    Margin="10,10,10,10" 
    Loaded="dgrGrid_Loaded"> 
+0

привет @Nkosi, я удалил 'VirtualizingStackPanel.IsVirtualizing = "True"', но кажется, что мое время DataGrid нагрузка по-прежнему то же самое. я должен подождать почти 5 минут, чтобы получить 2000 записей. добавив это в файл xaml, должен ли я добавить любую другую функцию/процесс в конец кода? – jeliey

+0

2000 записей в сетке данных много и замедлит ваше приложение. вам следует подумать о подкачке вашего сервера данных и его загрузке в куски. – Nkosi

+0

yup, вот почему я хочу сделать эту виртуализацию как ленивую загрузку. поэтому он должен отображать 50 первых записей. и когда пользователь прокручивает вниз по мыши, datagrid будет загружать следующие 50 записей. мы можем добиться этого, используя виртуализацию? – jeliey

 Смежные вопросы

  • Нет связанных вопросов^_^