我有两个类Cricket,足球和可观察的对象类型集合列表。基于一定的条件,我想把板球/足球类型的对象添加到可观察的集合中。我不分配任何数据,即只创建和实例类Cricket/足球,并将该实例添加到可观察的集合和绑定到UI。我的期望是,由于我没有为Cricket/足球的实例分配任何数据,所以只需要在datagrid中创建标题。但是,在创建该类实例时,我发现了一行,其中包含在相应类下定义的变量的默认值以及行标题。如何避免在不影响数据标题的情况下创建空行。
<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" />编辑
发布于 2016-07-26 03:09:05
我认为您的数据集的CanUserAddRows属性设置为true。只要把它设为假就可以解决你的问题了。
CanUserAddRows="false"
IsReadOnly="True"编辑:抱歉。我现在把你的问题看清楚了。这是因为观察者集合的类型是object。我将向您展示一个小示例,以便您了解绑定是如何在数据集中工作的。您的集合应该具有公共属性,因此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;}
}https://stackoverflow.com/questions/38570255
复制相似问题