1

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

助けてください。

4

1 に答える 1

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;
}
于 2013-03-23T08:21:17.263 に答える