Повторный запуск RowStyle в gridControl devexpress wpf
От: Аноним  
Дата: 23.11.12 05:57
Оценка:
Добрый день!
Столкнулся со следующей проблемой при задании RowStyle в devExpress-ом gridControl для wpf.
При первой загрузке данных конвертер, установленный для rowStyle, срабатывает, но при последующих обновлениях данных нет.
Ниже приведен код в xml и cs для конвертера:

<Style x:Key="ConditionalRowStyle" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=RowStyle}}" TargetType="{x:Type dxg:GridRowContent}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{PageControls:ActRowColorConverter}">
<Binding Path="Row" />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type dxg:GridControl}}" Path="HasChanges" />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type dxg:GridControl}}" Path="SelectedItems"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>



public class ActRowColorConverter : MarkupExtension, IMultiValueConverter
{
public object Convert(object value, System.Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var contractAct = value as ContractAct;
if (contractAct != null)
{
if (contractAct.PayStatus == 2)
{
return new LinearGradientBrush(
Color.FromArgb(255, 250, 250, 110),
Color.FromArgb(127, 250, 250, 110), 0);
}
else if (contractAct.PayStatus == 3)
{
return new LinearGradientBrush(
Color.FromArgb(255, 144, 238, 144),
Color.FromArgb(127, 144, 238, 144), 0);
}
}
return Brushes.Transparent;
}

public object ConvertBack(object value, System.Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}

public override object ProvideValue(System.IServiceProvider serviceProvider)
{
return this;
}

public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var contractAct = values[0] as ContractAct;
if (contractAct != null)
{
if (contractAct.PayStatus == 2)
{
return new LinearGradientBrush(
Color.FromArgb(255, 250, 250, 110),
Color.FromArgb(127, 250, 250, 110), 0);
}
else if (contractAct.PayStatus == 3)
{
return new LinearGradientBrush(
Color.FromArgb(255, 144, 238, 144),
Color.FromArgb(127, 144, 238, 144), 0);
}
}
return Brushes.Transparent;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}

Для gridControl я уже устанавливал и AllowLiveDataShaping="True", и в стиль добавлял триггеры, и ItemSource делал BindingList. Но ничего не помогло.
Заранее спасибо.

25.11.12 01:52: Перенесено модератором из '.NET' — TK
Re: Повторный запуск RowStyle в gridControl devexpress wpf
От: Аноним  
Дата: 23.11.12 06:53
Оценка:
Кстати, RefreshRow и RefreshData мне не помогли
Re: Повторный запуск RowStyle в gridControl devexpress wpf
От: Аноним  
Дата: 23.11.12 09:50
Оценка:
При этом, если сделать сортировку по какому-нибудь полю, а затем сбросить ее, то стиль строки становится таким как надо.
В общем, много недоработок в devExpress для wpf еще.
Re: Повторный запуск RowStyle в gridControl devexpress wpf
От: Аноним  
Дата: 24.11.12 12:18
Оценка:
А>Для gridControl я уже устанавливал и AllowLiveDataShaping="True", и в стиль добавлял триггеры, и ItemSource делал BindingList. Но ничего не помогло.
А>Заранее спасибо.

Кстати а кто-нибудь пробовал убрать selection, т.е. нужно чтобы показывалась только строка с фокусом, например если несколько гридов , то если выделить и перейти в другой грид то остается полоса выделения , хотя фокус уже в другом гриде. Вот отключить эту полоску или сделать для нее стиль прозрачный както можно ?
Re[2]: Повторный запуск RowStyle в gridControl devexpress wpf
От: Dmitry_83  
Дата: 27.11.12 02:23
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Кстати а кто-нибудь пробовал убрать selection, т.е. нужно чтобы показывалась только строка с фокусом, например если несколько гридов , то если выделить и перейти в другой грид то остается полоса выделения , хотя фокус уже в другом гриде. Вот отключить эту полоску или сделать для нее стиль прозрачный както можно ?


Через стили это можно сделать опять же. Добавляем триггер на Selected = true и задаем background, как вариант.
Re: Повторный запуск RowStyle в gridControl devexpress wpf
От: Dmitry_83  
Дата: 28.11.12 02:39
Оценка:
Спасибо за ответы)
В общем сам допер до решения. Надо было привязываться не к Row, а к изменению конкретного свойства (у меня это PayStatus). После редактирования также вызывать OnPropertyChanged.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.