2013-10-16 56 views
2

我有一個從數據庫填充的gridcontrol。另外,在代碼中,我將數據添加到checkeditsettings列。我在xaml中創建了一個模板,但我無法設法在C#中進行轉換。在下面我的代碼,將xaml模板綁定到後面的代碼

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; 

我真的堆在這裏。

+0

爲什麼你需要結合在這裏...你爲什麼不只是做template.VisualTree.SetValue(MyCheckEdit.ContentProperty,新MyToggleButton()); – Nitin

+2

你不應該首先這樣做。不要在WPF的程序代碼中創建或操作UI元素。這就是XAML的用途。 –

+1

我認爲最好創建一個從GridControl派生的類。我想這樣做是爲了覆蓋選擇模式和其他事情。我知道這根本不是一個好主意,但我來自Windows Forms背景,對我來說更簡單。但是我肯定會保留xaml代碼。非常感謝你! – Viva

回答

2

保持DataTemplate在XAML中Resources節,給它一個名字(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; 
相關問題