Devexpress-网格控制中的背景和网格线

时间:2015-11-08 18:32:20

标签: wpf devexpress gridcontrol

我遇到过gridcontrol的一些问题。

我必须使用填充,颜色,字体和悬停效果来设置和格式化网格列。

{{1}}
  1. 为了响应鼠标悬停或行选择,我必须在所有网格线上设置蓝色边框。只有底部网格线是蓝色的 现在从上面。适用于cellcontent presenter的代码在这里是不可能的。

  2. 为了响应单击的垃圾桶图标,我必须为特定行显示浅红色背景。  我将(viewmodel属性)SelectedGroupCode.Deleted = true绑定到后台。绑定显示在代码中。 但除了有问题的行外,所有行都涂成红色。

  3. 必须设置网格线宽度。我设法只使用gridrowthemekey_rowcontrolcontainertemplate为水平线设置它。

  4. 我向你保证,我已阅读过一些先前的帖子,但是它花了太多时间进行scrum sprint。

    缺少什么?

1 个答案:

答案 0 :(得分:1)

If you want to change the cell style in response to a mouse hover then you can use RelativeSource markup extension in DataTrigger's binding. If you want to check whether the row is focused, then you can use RowData.IsFocused property.
Here is example:

<Style x:Key="CustomCellStyle" TargetType="{x:Type dxg:LightweightCellEditor}" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=LightweightCellStyle}}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type dxg:RowControl}}}" Value="True">
            <Setter Property="BorderBrush" Value="Blue" />
        </DataTrigger>
        <DataTrigger Binding="{Binding RowData.IsFocused}" Value="true">
            <Setter Property="BorderBrush" Value="Blue" />
        </DataTrigger>
    </Style.Triggers>
</Style>

For displaying custom style for particular row I suggest you to use Conditional Formatting.
Here is example:

<dxg:GridControl ...>
    ...
    <dxg:GridControl.View>
        <dxg:TableView>
            <dxg:TableView.FormatConditions>                    
                <dxg:FormatCondition Expression="[Deleted]" FieldName="Profit">
                    <dxc:Format Foreground="Red"/>
                </dxg:FormatCondition>
            </dxg:TableView.FormatConditions>
        </dxg:TableView>
    </dxg:GridControl.View>
</dxg:GridControl>