2013-10-16 2 views
2

У меня есть gridcontrol, который заполнен из базы данных. Кроме того, в коде я добавил в datatable столбец 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

Почему вам нужно перепроверять здесь ... почему вы просто не делаете шаблон. VisualTree.SetValue (MyCheckEdit.ContentProperty, новый MyToggleButton()); – Nitin

+2

Вы не должны это делать в первую очередь. Не создавайте и не манипулируйте элементами пользовательского интерфейса в процедурном коде в WPF. Для этого и предназначен XAML. –

+1

Я думал, что лучше создать класс, полученный из GridControl. Я хочу сделать это, чтобы переопределить режим выбора и другие вещи. Я знаю, что это не очень хорошая идея, но я пришел из Windows Forms, и мне это легче. Но определенно я сохраню код xaml. Большое спасибо! – Viva

ответ

2

Держите DataTemplate в Resources секции в XAML, дать ему имя (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; 
Смежные вопросы