如何在WPF数据网格中获取默认行,就像在WINFORM datagridview中一样

时间:2014-07-27 14:33:08

标签: wpf datagrid

我是WPF的新手。我试图复制我在WPF数据网格中的Winform datagridview中创建的功能。 当我使用必需的列创建datagridview并运行应用程序时,它提供了一个默认的空行。我开始在运行时编辑默认行,并向datagridview添加了更多行。但是当我在WPF中做同样的事情时,我没有得到默认的空行。因此,我无法向每个列添加内容。 我需要一个空的数据网格,我会在运行时使用它来获取用户的输入。 请帮帮我...!

此致 Dhana

请参阅下面的XMAL

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
        Title="MainWindow" Height="450" Width="850">
    <Window.Resources>
        <col:ArrayList x:Key="CriteriaTypeList">
            <col:DictionaryEntry Key="SINGLE" Value="SINGLE"/>
            <col:DictionaryEntry Key="MULTIPLE" Value="MULTIPLE"/>
        </col:ArrayList>
    </Window.Resources>
    <Grid>
        <DataGrid HorizontalAlignment="Left" Margin="20,44,0,0" VerticalAlignment="Top" Height="350" Width="800" AutoGenerateColumns="False" CanUserReorderColumns="False" ItemsSource="{Binding}" FontSize="13" CanUserAddRows="True">
            <DataGrid.Columns>
                <DataGridComboBoxColumn Header="CriteriaType" Width="1*" ItemsSource="{StaticResource CriteriaTypeList}"/>
                <DataGridTextColumn Header="Priority" Width="1*"/>
                <DataGridComboBoxColumn Header="Condition" Width="2*"/>
                <DataGridTextColumn Header="(" Width="1*"/>
                <DataGridTextColumn Header="Data Item" Width="3*"/>
                <DataGridComboBoxColumn Header="Values" Width="1*"/>
                <DataGridTextColumn Header=")" Width="1*"/>
            </DataGrid.Columns>

        </DataGrid>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:0)

您尚未为任何列设置 Binding 。将Binding设置为底层ItemsSource中的某个属性,以便dataGrid知道在其行中显示什么,并且您将在dataGrid中看到空白行。

    <DataGrid HorizontalAlignment="Left" Margin="20,44,0,0"
              VerticalAlignment="Top" Height="350" Width="800" 
              AutoGenerateColumns="False" CanUserReorderColumns="False"
              ItemsSource="{Binding}" FontSize="13" CanUserAddRows="True">
        <DataGrid.Columns>
            .....
            <DataGridTextColumn Header="Priority" Width="1*"
                                Binding="{Binding PropertyName}"/> <-- HERE
            .....
        </DataGrid.Columns>

    </DataGrid>