避免在datagrid中创建空行

时间:2016-07-25 14:19:04

标签: wpf

我有两个类Cricket,Football和类型对象的Observable集合列表。基于某些条件,我想将Cricket / Football类型的对象添加到Observable Collection。我没有分配任何数据,只是创建类Cricket / Football的实例和实例,并将该实例添加到Observable Collections并绑定到UI。我的期望是,因为我没有将任何数据分配给Cricket / Football的实例,所以只需要在datagrid中创建头。但我发现的是一行,其中包含在相应类下定义的变量的默认值以及行标题,因为我正在创建该类的实例。如何避免在我的datagrid标头不受影响的情况下创建void行。

<DataGrid SelectionMode="Single" VerticalAlignment="Stretch" ItemsSource="{Binding itemSource, UpdateSourceTrigger=PropertyChanged}"  CanUserReorderColumns="False" CanUserAddRows="False" IsReadOnly="True" CanUserDeleteRows="False" CanUserResizeColumns="False" HorizontalGridLinesBrush="Black" VerticalGridLinesBrush="Black" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" />

Edit

1 个答案:

答案 0 :(得分:1)

我认为您的datagrid的CanUserAddRows属性设置为true。只需将其设置为false即可解决问题。

CanUserAddRows="false"
IsReadOnly="True"

编辑: 抱歉。我现在正确地读了你的问题。这是因为ObservableCollection的类型是对象。我将向您展示一个小样本,以便您了解绑定在数据网格中的工作原理。您的集合应该具有公共属性,因此datagrid可以将列绑定到它。如果您使用Object的集合类型而不是没有绑定的特性,那么将显示空行。

XAML:

<DataGrid AutoGenerateColumns="False" Height="253" HorizontalAlignment="Left" Margin="27,24,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="448">
            <DataGrid.Columns>
                <DataGridTextColumn Header="First" Binding="{Binding Path=Field, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
            </DataGrid.Columns>
 </DataGrid>

代码背后:

public partial class MainWindow : Window 
{ 
    public ObservableCollection dataSource;
    public MainWindow()
    {
        InitializeComponent();

        this.dataSource = new ObservableCollection<SomeDataSource>();

        this.dataSource.Add(new SomeDataSource { Field = "123" });
        this.dataSource.Add(new SomeDataSource { Field = "1234" });
        this.dataSource.Add(new SomeDataSource { Field = "12345" });

        this.dataGrid1.ItemsSource = this.dataSource;
    }
}

public class SomeDataSource
{
    public string Field {get;set;}
}
相关问题