Viva
Viva

Reputation: 2075

convert xaml template binding to code behind

I have a gridcontrol which is populated from database. Also, in code, I added to datatable a checkeditsettings column. I created a template in xaml , but I can't manage to convert it in C#. In my code below,

XAML code:

  <dxg:GridColumn FieldName="Select"  Fixed="Right"  UnboundType="Boolean">
  <dxg:GridColumn.EditSettings>
   <dxe:CheckEditSettings  />
 </dxg:GridColumn.EditSettings>
  <dxg:GridColumn.CellTemplate>
 <DataTemplate>
   <local:MyCheckEdit 
    IsChecked="False"
    IsEnabled='True'
    Checked="MyCheckEdit_Checked"      
     EnabledChecked="/Images/mark.png" 
     EnabledUnchecked="/Images/markk.png"
     DisabledUnchecked="/Images/marken.png"  >
    </local:MyCheckEdit>
   </DataTemplate>
    </dxg:GridColumn.CellTemplate>
   </dxg:GridColumn>

What I have tried so far:

        GridColumn colselect = new GridColumn();
        ComboBoxEditSettings c = new ComboBoxEditSettings();
        colselect.EditSettings = c;
        DataTemplate template = new DataTemplate();
        template.VisualTree = new FrameworkElementFactory(typeof(MyCheckEdit));
        template.VisualTree.SetBinding(MyCheckEdit.ContentProperty, new Binding("...?"));
        colselect.CellTemplate = template;

I am really stack here.

Upvotes: 2

Views: 1209

Answers (1)

Sphinxxx
Sphinxxx

Reputation: 13047

Keep the DataTemplate in a Resources section in xaml, give it a name (x:Key) and just reference it from code-behind when you need it:

<dxg:DataGrid x:name="myGrid" >
    <dxg:DataGrid.Resources>
        <DataTemplate x:Key="MyCellTemplate" >
            <local:MyCheckEdit IsChecked="False"
                               IsEnabled='True'
                               Checked="MyCheckEdit_Checked"      
                               EnabledChecked="/Images/mark.png" 
                               EnabledUnchecked="/Images/markk.png"
                               DisabledUnchecked="/Images/marken.png" />
        </DataTemplate>
    </dxg:DataGrid.Resources>

    ...

</dxg:DataGrid>

Then, in your code-behind:

GridColumn colselect = new GridColumn();
colselect.EditSettings = new ComboBoxEditSettings();
colselect.CellTemplate = myGrid.Resources["MyCellTemplate"] as DataTemplate;

Upvotes: 2

Related Questions