2014-02-26 39 views
0

我的意思是我應該如何顯示數據結構以便像表格一樣使用它? 我想擁有一個可以動態添加和刪除行和列的表格,但其餘部分應該看起來像一張表格。在WPF中繪製可調整大小的表格

現在它表現得像IList>,因爲我應該調整它,就像我之前說過的那樣。但是現在我想在DataGrid中顯示它,並且能夠擁有行,coulmns和「單元格」。但我無法正確地綁定它,它不顯示任何內容,只有每行的空單元格。

我該怎麼辦?或者mby使用數組並在每行/列添加後調整它們的大小?

請指教。

現在我有這樣一條:

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) 
    { 
     var storage = new Storage(); 
     storage.Data.Add(new DataRow("Bla-bla") 
        { 
         new DataEntity() {Text = "bla-bla", Forces = new[] {ForceEnum.AA}}, 
         new DataEntity() {Text = "bla-bla", Forces = new[] {ForceEnum.UA}} 
        }); 
     DataListView.DataContext = new StorageModel(storage); 
    } 

public class StorageModel 
{ 
    public StorageModel() 
    { 

    } 

    public StorageModel(IStorage storage) 
    { 
     DataRowList = new ObservableCollection<DataRow>(storage.Data); 
    } 

    public ObservableCollection<DataRow> DataRowList 
    { 
     get; 
     set; 
    } 
} 
public class DataRow : IList<DataEntity> 
{ 
    public string Name { get; private set; } 
    private readonly List<DataEntity> _list = new List<DataEntity>(); 
... 

_

<ListView ItemsSource="{Binding DataRowList}" Name="DataListView"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <ListView ItemsSource="{Binding}"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Name}" /> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

我希望能夠創建一個類似於this的東西,但有2路結合...

回答

1

你似乎是要求TreeView而不是ListView,因爲你有一個樹一樣的數據結構。

如果你不想使用TreeView,我建議你使用一個簡單的ListView一個小竅門。那就是你可以嘗試一個Expander,它會添加或刪除父項下面的項目,使用縮進來僞造樹形外觀,並且列中的所有單元格都將重新調整大小。

順便說一句不要忘記定義列

方法如下:

<ListView Margin="10" Name="lvUsers"> 
     <ListView.View> 
       <GridView> 
         <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /> 
         <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /> 
         <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /> 
       </GridView> 
     </ListView.View> 
</ListView> 

如果你希望實現的是擴展技巧的行爲,我建議你聽事件OnExpanded並添加或刪除所需的行。