Я новичок, когда дело доходит до WPF, поэтому я даже не знаю, возможно ли то, что я пытаюсь сделать. Я читал о ItemsControl для создания многочисленных экземпляров элемента. Все примеры, которые я видел, только позволяют создавать X количество элементов для одного «типа», как на примере ниже:Создание нескольких элементов с помощью ItemsControl
ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding }" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
который создает кнопку для каждого элемента в ItemSource.
Я хочу, чтобы создавать элементы различных типов, такие как TextBox, Button и ComboBox, с помощью ItemsControl в любое время, когда я нажимаю кнопку. Поэтому, когда я нажимаю samp_Btn1, я хочу, чтобы новый TextBox и кнопка появлялись под тем, который я уже отображал.
Я пробовал:
ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Name="test_Btn"
Width="50"
Height="50"/>
<TextBox Name="test_TextBox" Width="50" Height="50" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
, а затем функцию, которая только что создали новый ItemControl
private void createNewItem()
{
ItemsControl test = new ItemsControl();
}
, но я получаю сообщение об ошибке сказав, что PropertyVisual Tree установлен более чем один раз. Является ли это правильным способом заниматься вещами или мне нужно создать ItemControl для TextBox и Button отдельно?
DataTemplate может содержать только один элемент. Но это, конечно, может быть панель с несколькими дочерними элементами, например. StackPanel или Grid. – Clemens
@Clemens Итак, вы имеете в виду положить тег после того, как тег может быть потенциальным исправлением? –
http://stackoverflow.com/questions/23885919/the-property-visualtree-is-set-more-than-once-in-windows-phone-8-c-sharp/23885980#23885980 – NSGaga