# Quick Start

## Content

This quick start guide outlines the steps for integrating **Rules Manager** with the **FlexGrid** control and applying conditional formatting to the grid data.

Users can achieve the desired output either through the design view or code view.

![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/flexgring-integration-overview.png)

### Prerequisites

### NuGet Packages

* C1.WPF.Grid
* C1.WPF.Grid.ConditionalFormatting
* C1.WPF.RulesManager

### Create a New Project

1. Open Visual Studio and create a new WPF application
2. Open the NuGet Package Manager

>type=info
> Tools > NuGet Package Manager > Manage NuGet Packages for Solution

3. Search **C1.WPF.Grid**, **C1.WPF.RulesManager** and **C1.WPF.ConditionalFormatting** and install the packages

### Add FlexGrid and Rules Manager

1. Search **Flexgrid**, **C1Expander** and **C1RulesManager** from the Toolbox
2. Drag and drop the **FlexGrid**, **C1Expander** and **C1RulesManager** onto the form
3. Bind data using [FlexGrid QuickStart](https://developer.mescius.com/componentone/docs/wpf/online-flexgrid/FlexGridQuickStart.html#i-heading-bind-flexgrid-with-data-0)

### Integrate in Designer

1. Click the **smart tag** of **FlexGrid** and click **Add Behavior**
2. Select **Conditional Formatting Behavior** from the drop-down menu and click **Add Behavior**

* Upon adding the **Conditional Formatting Behavior**, the code will look like the following

    ```xml
    <i:Interaction.Behaviors>
        <c1:ConditionalFormattingBehavior/>
    </i:Interaction.Behaviors>
    ```

3. Right click on the form and select **properties** from the context menu
<br>
    ![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/smart-tag-flexgrid.png)
4. Click on the **`<c1:ConditionalFormattingBehavior/>`** code to view rules engine from the **properties** window
5. Click on the **New** button to add **C1RulesEngine**
<br>
    ![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/rules-engine-properties.png)
6. Click on the ellipsis in the **properties** window of **C1RulesEngine** to open the **Rules Collection Editor**
<br>
    ![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/properties-elipsis.png)
7. Select any rule from the **Rules Collection Editor** window and click **Add** ![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/rules-collection-editor-window.png)
8. Edit the rules in the **properties** window of the **Rules Collection Editor**
9. Click **OK** to add the rules. In the example below, color scale rule and data bar rule has been added through the **Rules Collection Editor**, hence it gets reflected on the code

### Integrate through Code

1. Define the **Interaction.Behaviors** tag using the following code. This applies conditional formatting to **FlexGrid** upon binding it with **Rules Manager**

    ```xml
    <i:Interaction.Behaviors>
         <c1:ConditionalFormattingBehavior Engine="{Binding ElementName=rulesManager, Path=Engine}"/>
     </i:Interaction.Behaviors>
    ```
2. **Add C1Expander** to wrap the **Rules Manager** and make it collapsible using the following code

    ```xml
    <c1:C1Expander Header="RulesManager" ExpandDirection="Left" ExpandIconAlignment="Left" HorizontalContentAlignment="Right" BorderThickness="0" Grid.Column="1">
        <c1:C1RulesManager x:Name="rulesManager" Width="400" RulesVisibility="All">
            <c1:C1RulesManager.Engine>
            </c1:C1RulesManager.Engine>
        </c1:C1RulesManager>
    </c1:C1Expander>
    ```
3. Define the **C1RulesEngine** inside **C1RulesManager**

    ```xml
    <c1:C1Expander Header="RulesManager" ExpandDirection="Left" ExpandIconAlignment="Left" HorizontalContentAlignment="Right" BorderThickness="0" Grid.Column="1">
       <c1:C1RulesManager x:Name="rulesManager" Width="400" RulesVisibility="All">
           <c1:C1RulesManager.Engine>
               <c1:C1RulesEngine>
               </c1:C1RulesEngine>
           </c1:C1RulesManager.Engine>
       </c1:C1RulesManager>
    </c1:C1Expander>
    ```
4. Define the rules using **C1RulesEngine**

    ```xml
    <c1:C1RulesManager.Engine>
        <c1:C1RulesEngine>
            <c1:RulesEngineCustomRule Func="GetFirstNameStyle" Ranges="[FirstName]"/>
            <c1:RulesEngineSegmentsRule/>
            <c1:RulesEngineExpressionRule Ranges="[OrderCount]" Expression="[OrderCount] &lt; 50">
                <c1:RulesEngineStyle Background="#FFFDE7E9"/>
            </c1:RulesEngineExpressionRule>
            <c1:RulesEngineExpressionRule Ranges="[OrderCount]" Expression="[OrderCount] &gt;= 50">
                <c1:RulesEngineStyle Background="#FFDFF6DD"/>
            </c1:RulesEngineExpressionRule>
            <c1:RulesEngineExpressionRule Ranges="[OrderTotal]" Expression="[OrderTotal] &lt; 5000">
                <c1:RulesEngineStyle Foreground="#FFC42B1C"/>
            </c1:RulesEngineExpressionRule>
            <c1:RulesEngineExpressionRule Ranges="[OrderTotal]" Expression="[OrderTotal] &gt;= 5000">
                <c1:RulesEngineStyle Foreground="#FF0F7B0F"/>
            </c1:RulesEngineExpressionRule>
        </c1:C1RulesEngine>
    </c1:C1RulesManager.Engine>
    ```

In the example above, the **C1Expander** containing **C1RulesManager** applies conditional formatting to the **FlexGrid**. It uses **C1RulesEnginge** to style the grid cells based on the conditional formatting that is: rows with **OrderCount** less than 50 get a light red backcolor while those that are more or equal to 50 get light green color. For **OrderTotal** values that are less than 5000 gets a dark red forecolor while those that are greater than or equal to 5000 gets dark green color. Additionally, a **Custom Rule** is defined to style the **FirstName** column using a user-defined function. This setup helps visually highlight important data patterns for easier analysis.

![](https://cdn.mescius.io/document-site-files/images/ac639fbf-046b-4a70-872a-c6393c366bf1/images/quick-start-example.png)