WPF динамически добавляет строки текстовых полей в макет сетки

#c# #wpf #xaml #grid

#c# #wpf #xaml #сетка

Вопрос:

У меня есть окно в WPF, которое содержит Grid . Grid Изначально имеет одну строку и TextBox в этой строке. Когда пользователь нажимает на Button , я должен добавить строку в сетку с другой TextBox . Хотя это кажется выполнимым, мне нужно, чтобы сетка была прокручиваемой, когда строки превышают высоту сетки. (это похоже на то, как вы добавляете вложения в электронную почту. Вы добавляете одно, а затем говорите добавить еще одно .. и список можно продолжить). Правильно ли я поступаю или есть лучший способ сделать это?

Комментарии:

1. Мне кажется, это хороший способ. Вам нужно только обернуть сетку с помощью ScrollViewer, и проблем возникнуть не должно. Я предлагаю вам попробовать это и посмотреть, как это работает.

Ответ №1:

Не могу ответить, правильно ли вы это делаете, поскольку вы не предоставили никакого кода.

Вот как я бы это сделал. Мои модели представления:

 public class AttachmentInfo : ViewModel
{
    public string Path { get/set omitted }
}

public class EmailInfo : ViewModel
{
    public ICollection<AttachmentInfo> Attachments { get omitted }

    public ICommand AddAttachmentCommand { get omitted }

    // logic for adding attachment simply adds another item to Attachments collection
}
  

На мой взгляд, что-то вроде этого:

 <ScrollViewer>
    <ItemsControl ItemsSource="{Binding Attachments}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBox Text="{Binding Path}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>
<Button Command="{Binding AddAttachmentCommand}">Add</Button>