2016-11-23 8 views
1

У меня есть TabControl в XAML коде:WPF ListView - Добавить Dynamic

<TabItem Name="tabItem1" Header="Tab1"> 
    <ListBox Name="lstValues" 
      Background="{x:Null}" 
      BorderBrush="{x:Null}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Border BorderThickness="1" 
       Margin="0,2,0,0" 
       BorderBrush="SteelBlue" 
       CornerRadius="4"> 
      <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="30" /> 
       <ColumnDefinition Width="25" /> 
       <ColumnDefinition Width="75" /> 
      </Grid.ColumnDefinitions> 
      <Button Name="btnRemoveValue" 
        Grid.Column="0" 
        Height="25" 
        Margin="5,2,0,2" 
        Background="DarkRed”/> 
      <TextBlock Grid.Column="1" 
         Text="Step"/> 
      <TextBox Grid.Column="2" 
        Margin="35,1,1,1" 
        Height="32"/> 
      </Grid> 
     </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 
</TabItem> 

Когда пользователь нажимает на кнопке детерминированной, мне нужно, чтобы добавить новый ListBox с этим шаблоном и элементами. Сколько раз пользователь нажимал?

+0

Вы хотите добавить новый TabItem в TabControl или только один ListBox под первым, в том же TabItem? –

ответ

2

вы должны привязать ваш tabcontrol.ItemsSource к списку объектов и установить его ItemTemplate и ContentTemplate. Таким образом, когда пользователь нажимает, вы добавляете новый объект в список объектов. Что-то вроде этого:

<TabControl Margin="0,5,0,0" 
      IsTabStop="False" 
      Focusable="False" 
      ItemsSource="{Binding MyObjectCollection, 
       UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"> 
    <TabControl.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal" 
        IsEnabled="False" 
        Focusable="False" 
        HorizontalAlignment="Center"> 
     <TextBlock Text="Versão:" Focusable="False"/> 
     <TextBlock Text="{Binding Sequencia}" Focusable="False"/> 
     </StackPanel> 
    </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
    <DataTemplate> 
     <ListBox Background="{x:Null}" 
       BorderBrush="{x:Null}" ItemsSource="{Binding ItemCollection}" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
      <Border BorderThickness="1" 
        Margin="0,2,0,0" 
        BorderBrush="SteelBlue" 
        CornerRadius="4"> 
       <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="30"/> 
        <ColumnDefinition Width="25"/> 
        <ColumnDefinition Width="75"/> 
       </Grid.ColumnDefinitions> 

       <Button Name="btnRemoveValue" 
         Grid.Column="0" 
         Height="25" 
         Margin="5,2,0,2" 
         Background="DarkRed"/> 
       <TextBlock Grid.Column="1" 
          Text="Step"/> 
       <TextBox Grid.Column="2" 
         Margin="35,1,1,1" 
         Height="32"/> 
       </Grid> 
      </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     </ListBox> 
    </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

MyObjectCollection является коллекция объектов ОС вы хотите присутствовать в представлении.

+0

Что вы подразумеваете под «списком объектов»? Обычный «Список '? В этом случае, если вы добавите к нему элемент, представление не получит уведомление для этого добавления. Вы должны указать, что этот «список объектов» должен быть получен из 'ObservableCollection '. –