2017-05-03 54 views
3

我有一個窗口,其中包含一個按鈕和一個網格,該窗口中的行和列設置。我試圖創建一個按鈕,單擊時會將另一行添加到網格,然後將用戶控件分配給該行。以編程方式將行添加到WPF窗口中的網格中

我發現了一堆方法來在線做datagrids,但沒有爲網格添加rowdefinition。任何人都可以協助這個代碼嗎?

WPF至今:

<DockPanel>   
    <Button DockPanel.Dock="Top" Height="22" x:Name="AddRow" Click="AddRow_Click"> 
     <TextBlock Text="Add Skill"/> 
    </Button> 
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
      <ColumnDefinition Width="1"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1"/> 
     </Grid.RowDefinitions> 
    </Grid>   
</DockPanel> 
+0

什麼說反對使用DataGrid或ListView使用GridView?你爲什麼堅持一個網格?請注意,DataGrid和ListView專門用於顯示數據/內容/事物的集合,而Grid僅用於佈局用戶界面元素... – elgonzo

+0

我將爲網格中的每一行分配一個用戶控件,並且每個用戶控制分配將相同,但給用戶增加了訂閱不同數據饋送的能力。所以不必打開多個窗口來查看多個數據源,而是可以在一個窗口中將它們全部在行中看到。 – mrcavanaugh09

+0

然後使用帶有GridView的ListView作爲其視圖。 ListView將顯示一組對象。這些對象是您要定義的類型/類,它們代表一個數據饋送。定義GridView的列,以便每列的DisplayMemberBinding屬性綁定到每個數據饋送對象。 – elgonzo

回答

3

這不應該是太困難了。爲了簡單起見,我將使用代碼隱藏進行說明。

<Grid x:Name="TheGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1"/> 
    </Grid.RowDefinitions> 
</Grid> 

在按鈕的點擊處理程序:

TheGrid.RowDefinitions.Add(new RowDefinition()); 

然後,只需添加用戶控件到網格,併爲它指定的行號。

var uc = new MyUserControl(); 
TheGrid.Children.Add(uc); 
Grid.SetRow(uc, TheGrid.RowDefinitions.Count - 1); 
+1

謝謝。這是我正在尋找的。 – mrcavanaugh09

相關問題