这是XAML。我想用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>
请帮忙。
答案 0 :(得分:5)
如果您想在代码中创建DataTemplate
,请使用FrameworkElementFactory
(msdn)。
XAML:
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False" Loaded="myDataGrid_Loaded">
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="templateColumnAddress" Header="Address" />
</DataGrid.Columns>
</DataGrid>
代码隐藏:
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;
}