2016-11-23 3 views
1

Ich habe ein TabControl in XAML-Code:WPF Listview - Add 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> 

Wenn der Benutzer klickt in Determinated Taste, ich brauche eine neue List-Box mit dieser Vorlage und Elemente hinzuzufügen. Wie oft klickt der Nutzer?

+0

Möchten Sie ein neues TabItem im TabControl oder nur ein anderes ListBox unter dem ersten im selben TabItem hinzufügen? –

Antwort

2

sollten Sie Ihre tabcontrol.ItemsSource an eine Objektliste binden und ItemTemplate und ContentTemplate festlegen. Wenn der Benutzer klickt, fügen Sie ein neues Objekt der Objektliste hinzu. So etwas wie das:

<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 ist eine Sammlung von Objekten, die Sie in der Ansicht präsentieren möchten.

+0

Was meinst du mit "Objektliste"? Eine normale 'Liste '? Wenn Sie in diesem Fall ein Element hinzufügen, erhält die Ansicht die Benachrichtigung für diesen Zusatz nicht. Sie sollten angeben, dass diese "Objektliste" von "ObservableCollection " abgeleitet werden muss. –