Reputation: 67
Here is the XAML. I want to do the same thing with C#.
<DataGrid x:Name="myDataGrid">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Address">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Address}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Please help.
Upvotes: 1
Views: 8446
Reputation: 19296
If you want to create DataTemplate
in code you should use FrameworkElementFactory
(msdn).
XAML:
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False" Loaded="myDataGrid_Loaded">
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="templateColumnAddress" Header="Address" />
</DataGrid.Columns>
</DataGrid>
Code-behind:
public void myDataGrid_Loaded(object sender, EventArgs e)
{
FrameworkElementFactory tbHolder = new FrameworkElementFactory(typeof(TextBox));
tbHolder.SetBinding(TextBox.TextProperty, new Binding("Address"));
var dataTemplate = new DataTemplate();
dataTemplate.VisualTree = tbHolder;
dataTemplate.DataType = typeof(DataGridTemplateColumn);
templateColumnAddress.CellTemplate = dataTemplate;
}
Upvotes: 5