Добрый день!
Столкнулся со следующей проблемой при задании 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
При этом, если сделать сортировку по какому-нибудь полю, а затем сбросить ее, то стиль строки становится таким как надо.
В общем, много недоработок в devExpress для wpf еще.