我有两个类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" />
答案 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;}
}