1
我正在開發一個複雜的表單應用程序。每行在結尾處都有一個加號按鈕,應該在其下面添加一個新行。如果您需要我正在實施的示例,請查看iTunes和智能播放列表編輯對話框。它使用查詢和嵌套,這是我用來構建用戶友好的查詢構建器。關於如何在彼此之下嵌套行(在幾個空格上標籤)並將行添加到彼此之間的網格的任何提示?Silvelight:如何動態添加網格行之間的控件?
我正在開發一個複雜的表單應用程序。每行在結尾處都有一個加號按鈕,應該在其下面添加一個新行。如果您需要我正在實施的示例,請查看iTunes和智能播放列表編輯對話框。它使用查詢和嵌套,這是我用來構建用戶友好的查詢構建器。關於如何在彼此之下嵌套行(在幾個空格上標籤)並將行添加到彼此之間的網格的任何提示?Silvelight:如何動態添加網格行之間的控件?
你可以嘗試使用TreeView control
你可以代表每行作爲對象把它們放在一個ObservableCollection數據,然後將其綁定到TreeView的項目源。每個行對象也有一個Children屬性,其中包含嵌套行對象的ObservableCollection。
class Row
{
public ObservableCollection<Row> Children { get; set; }
// ....
}
partial class MainPage
{
public ObservableCollection<Row> Rows{ get; set; }
public MainPage()
{
//Add your initial rows
this.AddRow(new Row(...));
this.AddRow(new Row(...));
//...
this.InitializeComponents();
}
public void AddRow(Row newRow, Row parentRow=null)
{
if(parentRow == null)
{
// Add new row to root of tree
this.Rows.Add(newRow);
}
else
{
//Add new row as child of an existing row of tree
parentRow.Children.Add(newRow);
}
}
}
<UserControl x:Class="MainPage" x:Name="mainPageUserControl">
<TreeView ItemsSource="{Binding Rows, ElementName=mainPageUserControl}">
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<!-- Template the behaviour/look of your rows as needed -->
</HierarchicalDataTemplate>
</TreeView>
</UserControl>
要添加或刪除新行,你可以簡單地添加/從觀察集合刪除行對象。綁定到ObservableCollection意味着TreeView將自動更新自己,如果行被添加/刪除
我現在就試試這個。謝謝! – sean