2

我有一个从数据库填充的网格控件。此外,在代码中,我向数据表添加了一个 checkeditsettings 列。我在 xaml 创建了一个模板,但我无法在 C# 中转换它。在我下面的代码中,

XAML 代码:

  <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>

到目前为止我已经尝试过:

        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;

我在这里真的很累。

4

1 回答 1

2

将其保留DataTemplateResourcesxaml 中,为其命名 ( x:Key) 并在需要时从代码隐藏中引用它:

<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>

然后,在您的代码隐藏中:

GridColumn colselect = new GridColumn();
colselect.EditSettings = new ComboBoxEditSettings();
colselect.CellTemplate = myGrid.Resources["MyCellTemplate"] as DataTemplate;
于 2013-10-16T17:31:47.007 回答