2015-06-10 4 views
1

Я новичок в WPF. У меня есть datagrid, который имеет около 10000 строк. Для осуществления поиска и выделения функциональных возможностей, следующий код реализованWpf datagrid scrollbar freezes

<Style x:Key="DefaultCell" TargetType="{x:Type DataGridCell}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
         <ControlTemplate TargetType="DataGridCell"> 

         <local:CustomTextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Content.Text}"> 
          <!--InlineCollection="{Binding ., Converter={StaticResource StringToXamlConverter} }"/>--> 
          <local:CustomTextBlock.InlineCollection> 
           <MultiBinding Converter="{StaticResource StringToXamlConverter}"> 
            <Binding RelativeSource="{RelativeSource Self}" Path="." /> 
            <Binding RelativeSource="{RelativeSource Self}" Path="(local:SearchOperations.SearchTerm)"/> 
           </MultiBinding> 
          </local:CustomTextBlock.InlineCollection>         
         </local:CustomTextBlock>      
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 

Поиска и изюминка работает как charm.But по щелчку вертикальной прокрутки вся сетка замерзает. Что может быть причиной здесь?

+0

Я предполагаю, что он запускает ** Конвертер ** для каждой строки. Не могли бы вы дать ему минутку, чтобы протестировать эту теорию? –

+0

@MikeEason да конвертер должен проходить через каждую ячейку для достижения функциональности поиска. – subhasmita

ответ

0

Вы можете использовать IsAsync недвижимость на своем Binding.

<Binding RelativeSource="{RelativeSource Self}" Path="." IsAsync="True"/> 

Это приведет к тому, что ваши привязки будут проходить в другом потоке, освобождая ваш пользовательский интерфейс от замерзания. Однако, поскольку у вас много строк, это может занять некоторое время, поэтому я бы посоветовал также использовать FallbackValue.

<Binding RelativeSource="{RelativeSource Self}" Path="." IsAsync="True" FallbackValue="..."/> 

Это обеспечит значение в то время как асинхронный процесс происходит, типичное значение будет текст, например, «Загрузка ...» сообщения.

+0

Благодарим вас за решение, но, к сожалению, оно не работает. То, что я наблюдал, когда я щелкаю в любом месте сетки, сетка переходит в не отвечающее состояние. Но когда сетка загружена, на колесе прокрутки мыши перемещаются строки прокрутки. – subhasmita

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