2009-02-16 90 views
3

我能想到的唯一例子是在html中 - 如果你动态地添加一个TR w/a colspan + div它包含细节(可编辑)点击前面的TR例如如何在WPF中动态添加详细信息行?

我试图Grok XAML,并想看看是否有人可以指出我这个古怪的请求正确的方向。

回答

7

这是什么东西,不知道这是否是你在找什么:

XAML:

<Grid Name="_mainGrid"> 
    <Grid.ColumnDefinitions> 
     <!-- Contains the button --> 
     <ColumnDefinition Width="Auto"/> 
     <!-- Contains the edit control --> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <!-- So that we have the 'empty' space at the end --> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
</Grid> 

代码:

public Window1() 
    { 
     InitializeComponent(); 
     CreateRow(); // Bootstrap 
    } 

    private void CreateRow() 
    { 
     RowDefinition newRow = new RowDefinition(); 
     newRow.Height = new GridLength(0, GridUnitType.Auto); 
     _mainGrid.RowDefinitions.Insert(_mainGrid.RowDefinitions.Count - 1, newRow); 

     int rowIndex = _mainGrid.RowDefinitions.Count - 2; 

     UIElement editControl = CreateEditControl(); 
     Grid.SetRow(editControl, rowIndex); 
     Grid.SetColumn(editControl, 1); 
     Grid.SetRowSpan(editControl, 1); 
     Grid.SetColumnSpan(editControl, 1); // Change this if you want. 
     _mainGrid.Children.Add(editControl); 

     Button addButton = new Button(); 
     addButton.Content = "Add"; 
     addButton.Click += new RoutedEventHandler(b_Click); 
     Grid.SetRow(addButton, rowIndex); 
     Grid.SetColumn(addButton, 0); 
     _mainGrid.Children.Add(addButton); 
     addButton.Tag = editControl; 

    } 

    void b_Click(object sender, RoutedEventArgs e) 
    { 
     CreateRow(); 
     Control button = (Control)sender; 
     UIElement editControl = (UIElement)button.Tag; 
     _mainGrid.Children.Remove(button); 
     Grid.SetColumn(editControl, 0); 
     Grid.SetColumnSpan(editControl, 2); 
    } 

    private UIElement CreateEditControl() 
    { 
     return new TextBox(); 
    } 
+0

让我工作起来快速POC测试此代码,当我看到有用的东西时我会接受答案;) – 2009-02-17 13:33:14

相关问题