2016-07-25 51 views
0

我有兩個類Cricket,Football和Observable類型對象列表。基於一定的條件,我想添加類型Cricket/Football到Observable Collection的對象。我不分配任何數據,即僅創建和實例類Cricket/Football,並將該實例添加到Observable集合並綁定到UI。我的期望是,因爲我沒有將任何數據分配給Cricket/Football實例,所以只能在數據網格中創建頭部。但是我發現,在創建該類的實例時,我發現了一行與在相應類下定義的變量的默認值以及行標題。我應該如何避免在datagrid頭不受影響的情況下創建空行。避免在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" /> 

Edit

+0

您需要提供更多的代碼,以便更好地瞭解您的問題。 –

+0

我瞭解Ayyapppan。我無法發佈完整的問題,因爲我在提交問題時出現了一些錯誤。 –

+0

Ayyapppan,因爲我無法添加完整的問題,我添加了其餘的圖像。轉到編輯鏈接。謝謝。 –

回答

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;} 
} 
+0

請看看我在問題中發佈的xaml。我已經嘗試過了。當我創建一個類的實例並將該實例添加到Observable Collection列表並將該列表綁定到DataGrid時,我得到一個默認行,其中創建了保存該類中聲明的變量的默認值。我知道這種行爲很自然,我不能重寫它。那麼是否有任何方法可以刪除該默認行,以便我的數據網格標題不受影響。 –

+0

我編輯了我的答案。請檢查。 – ViVi

+0

首先,我沒有使用DataGrid.Columns創建靜態列。我只想讓DataGrid採用我指定的類的定義,即只需將該類中定義的屬性綁定到DataGrid標題,而不是使用該類中屬性的默認值創建默認行。 –