Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 WPF как обновить значения в DataGrid без "тормозов"?  [new]
Frolls
Member

Откуда: Уфа
Сообщений: 36
Здравствуйте!
Имеется датагрид, в котором порядка 300 строк и 20 столбцов. При программном изменении значения в какой-либо ячейке, датагрид приходится перерисовывать (Items.Refresh()), иначе изменения не отображаются. Но это прилично притормаживает работу программы((. Подскажите пожалуйста, как это можно исправить, может, я что-то делаю не так?..

С уважением, =[Frolls]=
2 фев 10, 09:08    [8279451]     Ответить | Цитировать Сообщить модератору
 Re: WPF как обновить значения в DataGrid без "тормозов"?  [new]
WPFdev
Member

Откуда: Архангельская обл.
Сообщений: 97
Frolls,

Попробуйте у объекта данных реализовать интерфейс:
System.ComponentModel.INotifyPropertyChanged

            public event PropertyChangedEventHandler PropertyChanged;

            private void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
2 фев 10, 11:55    [8280852]     Ответить | Цитировать Сообщить модератору
 Re: WPF как обновить значения в DataGrid без "тормозов"?  [new]
Out
Member

Откуда:
Сообщений: 70
Или для ItemsSource использовать ObservableCollection
2 фев 10, 14:36    [8282445]     Ответить | Цитировать Сообщить модератору
 Re: WPF как обновить значения в DataGrid без "тормозов"?  [new]
Frolls
Member

Откуда: Уфа
Сообщений: 36
Спасибо большое!! Сделал все, как Вы советовали (реализовал интерфейс и у ItemsSource использовал ObservableCollection), - Заработало!!

С уважением, =[Frolls]=
3 фев 10, 07:50    [8286016]     Ответить | Цитировать Сообщить модератору
 Re: WPF как обновить значения в DataGrid без "тормозов"?  [new]
Frolls
Member

Откуда: Уфа
Сообщений: 36
У меня одного DataGrid притормаживает при скроллинге? При анимации?

<Window.Resources>
	<Style TargetType="{x:Type Custom:DataGridRow}">
		
	
		<Setter Property="Control.FontSize" Value="24" />
		<Setter Property="Control.Foreground" Value="Blue" />
		<Setter Property="Control.HorizontalAlignment" Value="Center" />
		
		<!-- Триггеры -->
		<Style.Triggers>
			<Trigger Property="Control.IsMouseOver" Value="True">
				<Setter Property="Control.FontStyle" Value="Italic" />
			</Trigger>
			<DataTrigger Binding="{Binding Path=IsError}" Value="True">
			<Setter Property="Control.Background" Value="Red" />
				<DataTrigger.EnterActions>
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation
                 Storyboard.TargetProperty="Opacity"
                 From="0.5" To="1" Duration="0:0:0.2" 
                 RepeatBehavior="Forever"
                 AutoReverse="True"/>
              </Storyboard>
            </BeginStoryboard>
          </DataTrigger.EnterActions>
          <DataTrigger.ExitActions>
            <BeginStoryboard> 
              <Storyboard FillBehavior="Stop">
                <DoubleAnimation
                  Storyboard.TargetProperty="Opacity"
                  To="1" Duration="0:0:0.2" />
              </Storyboard>
            </BeginStoryboard>  
          </DataTrigger.ExitActions>
			</DataTrigger>
		</Style.Triggers>
	</Style>
</Window.Resources>

Пробовал менять не прозрачность, а Foreground и анимацию делать по ключевым кадрам. Все-равно жутко тормозит (до 80% грузит проц). И еще заметил особенность, что анимация цвета шрифта со временем пропадает, если подольше скроллить

С уважением, =[Frolls]=
11 фев 10, 14:43    [8330067]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить