Как динамически добавить строку сведений в WPF? - PullRequest
3 голосов
/ 17 февраля 2009

Единственный пример, который я могу вспомнить, это html - если вы динамически добавляете TR с / colspan + div внутри него, содержащие детали (редактируемые), по щелчку предыдущего TR, например,

Я пытаюсь ухватить XAML и хотел посмотреть, сможет ли кто-нибудь указать мне правильное направление с этим дурацким запросом.

1 Ответ

7 голосов
/ 17 февраля 2009

Вот что-то, не уверен, что это то, что вы ищете:

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...