none
Specified element is already the logical child of another element. Disconnect it first. RRS feed

  • Frage

  • Heiho Leute,

    ich habe eine TabControl:

    <TabControl ItemsSource="{Binding GroupList}">
        </TabControl>
    

    und will einfach an anderer stelle sagen

    GroupList.Add(new Group(foo,bar));
    

    Hierbei kommt die oben genannte Fehlermeldung, weiß jemand wie ich das umgehen kann und warum das nur so ist wegen der Tabcontrol und bei ner ListView (selbes szenario), macht er keine probleme?

     

    Gruß B

    Freitag, 28. Januar 2011 16:16

Antworten

  • Versuch mal das ContentTemplate anstatt Content.
    • Als Antwort markiert BtheBeast Montag, 31. Januar 2011 10:36
    Montag, 31. Januar 2011 10:27
    Beantworter
  • Du bist der Wahnsinn! Hier die Lösung:

    <Setter Property="ContentTemplate">
                <Setter.Value>
                  <DataTemplate>
                    <Grid>
                      <DataGrid ItemsSource="{Binding Devices}"></DataGrid>
                    </Grid>
                  </DataTemplate>
                </Setter.Value>
              </Setter>
    
    Vielen Dank!

     

     

     

    • Als Antwort markiert BtheBeast Montag, 31. Januar 2011 10:36
    Montag, 31. Januar 2011 10:35

Alle Antworten

  • Was für ein Typ ist die GroupList?

     

    Freitag, 28. Januar 2011 16:23
    Beantworter
  • Entschuldigung: ObservableCollection
    Freitag, 28. Januar 2011 16:24
  • Worher kommen die Objekte, die du hinzufügen möchtest?

     

    Freitag, 28. Januar 2011 18:27
    Beantworter
  • ausm DataContext, ist eine Klasse die GroupList als Property hat.
    Freitag, 28. Januar 2011 19:08
  • Hm liegt anscheinend nicht direkt an der TabControl.. mal nen Auszug:

    Ach ja GroupList ist ne Liste aus Gruppen die wiederum ne Liste aus Devices hat, sobald 2 Elemente in der GroupList sind, fängt er an zu spinnen.

    <TabControl Name="tabControl" ItemsSource="{Binding GroupList}">
          <TabControl.ItemContainerStyle>
            <Style TargetType="TabItem">
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="Height" Value="30"/>
            <Setter Property="Header" Value="Hallo"/>
              <Setter Property="Content">
              <Setter.Value>
                  <DataGrid Name="dataGrid" ItemsSource="{Binding Devices}" AutoGenerateColumns="False">
                  <DataGrid.Columns>
                    <DataGridTemplateColumn Header="VU" Width="150" IsReadOnly="True">
                      <DataGridTemplateColumn.CellTemplate>
                          <DataTemplate>
                            <Grid HorizontalAlignment="Stretch" Margin="10,2,10,2">
                              <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition/>
                              </Grid.RowDefinitions>
                              <ProgressBar Grid.Row="0" Minimum="-40" Height="10" Maximum="18" HorizontalAlignment="Stretch" Value="{Binding VuMaster}" Margin="0,0,0,4"></ProgressBar>
                              <ProgressBar Grid.Row="1" Minimum="-60" Height="10" Maximum="0" HorizontalAlignment="Stretch" Value="{Binding VuLow}"></ProgressBar>
                            </Grid>
                          </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                      </DataGridTemplateColumn>
                      <DataGridTextColumn Header="Name" MinWidth="50" Width="SizeToCells" Binding="{Binding Name}"></DataGridTextColumn>
                      <DataGridTextColumn Header="Product" MinWidth="60" Width="SizeToCells" Binding="{Binding Product}" IsReadOnly="True"></DataGridTextColumn>
                      <DataGridTextColumn Header="Typ" MinWidth="64" Width="SizeToCells" Binding="{Binding Typ}" IsReadOnly="True"></DataGridTextColumn>
                      <DataGridTemplateColumn Header="Mute" Width="80" >
                        <DataGridTemplateColumn.CellTemplate>
                          <DataTemplate>
                            <ToggleButton Margin="5,2,5,2" Style="{DynamicResource Mute}" IsChecked="{Binding Mute}">Mute</ToggleButton>
                          </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                      </DataGridTemplateColumn>
                      <DataGridTemplateColumn Header="Gain" Width="80" >
                        <DataGridTemplateColumn.CellTemplate>
                          <DataTemplate>
                            <StackPanel Orientation="Horizontal" Margin="5,2,5,2">
                              <TextBox x:Name="textGain" Width="30" Text="{Binding Volume1, UpdateSourceTrigger=PropertyChanged}"></TextBox>
                              <Grid HorizontalAlignment="Stretch">
                                <Grid.RowDefinitions>
                                  <RowDefinition/>
                                  <RowDefinition/>
                                </Grid.RowDefinitions>
                                <Button Width="20" Visibility="{Binding ElementName=textGain, Path=Visibility}" Height="12" Grid.Row="0" Padding="0" FontSize="8">+</Button>
                                <Button Width="20" Visibility="{Binding ElementName=textGain, Path=Visibility}" Height="12" Grid.Row="1" Padding="0" FontSize="8">-</Button>
                              </Grid>
                              <TextBlock Visibility="{Binding ElementName=textGain, Path=Visibility}">db</TextBlock>
                            </StackPanel>
                          </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                      </DataGridTemplateColumn>
                      <DataGridTemplateColumn Header="Volume" Width="80" >
                        <DataGridTemplateColumn.CellTemplate>
                          <DataTemplate>
                            <StackPanel Orientation="Horizontal" Margin="5,2,5,2">
                              <TextBox x:Name="textVolume" Width="30" Text="{Binding Volume2, UpdateSourceTrigger=PropertyChanged}"></TextBox>
                              <Grid HorizontalAlignment="Stretch">
                                <Grid.RowDefinitions>
                                  <RowDefinition/>
                                  <RowDefinition/>
                                </Grid.RowDefinitions>
                                <Button Width="20" Visibility="{Binding ElementName=textVolume, Path=Visibility}" Height="12" Grid.Row="0" Padding="0" FontSize="8">+</Button>
                                <Button Width="20" Visibility="{Binding ElementName=textvolume, Path=Visibility}" Height="12" Grid.Row="1" Padding="0" FontSize="8">-</Button>
                              </Grid>
                              <TextBlock Visibility="{Binding ElementName=textVolume, Path=Visibility}">db</TextBlock>
                            </StackPanel>
                          </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                      </DataGridTemplateColumn>
                      <DataGridTextColumn Header="IP" MinWidth="40" Width="SizeToCells" Binding="{Binding Ip}"></DataGridTextColumn>
                      <DataGridTextColumn Header="Error" MinWidth="50" Width="SizeToCells" Binding="{Binding Error}"></DataGridTextColumn>
                    </DataGrid.Columns>
                  
                  
                  
                </DataGrid>
              </Setter.Value>
            </Setter>
            <Setter Property="Template">
              <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                  <Grid>
                    <Border Name="Border" Background="Gray" BorderBrush="WhiteSmoke" BorderThickness="1,1,1,1" CornerRadius="8,8,0,0" Width="100">
                      <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header"
                         Margin="12,2,12,2"/>
                    </Border>
                  </Grid>
                  <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                      <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedTabBrush}" />
                    </Trigger>
                    <Trigger Property="IsSelected" Value="False">
                      <Setter TargetName="Border" Property="Background" Value="{StaticResource NonPressedTabBrush}" />
                    </Trigger>
                  </ControlTemplate.Triggers>
                </ControlTemplate>
              </Setter.Value>
            </Setter>
          </Style>
         </TabControl.ItemContainerStyle>
        </TabControl>

    Freitag, 28. Januar 2011 19:40
  • Ich könnte das Problem auch umgehen, wenn mir jemand sagen könnte wie ich das anders lösen könnte.

    Wie gesagt Liste aus Gruppen die Liste aus Devices hat.

    Gruppen sollen TabItems sein und in den TabItems soll ein DataGrid mit dem ItemSource Devices sein.

    Wenn man das anders lösen kann, brauch ich mich mit der Fehlermeldung net rumschlagen.

    Danke schonmal.

     

    Gruß B

    Samstag, 29. Januar 2011 17:52
  • Sind die einzelnen Devices in mehreren Gruppen vorhanden?

     

    Montag, 31. Januar 2011 07:47
    Beantworter
  • Jap! Aber das problem tritt auf ohne das ein Speaker in 2 Gruppen ist.
    Montag, 31. Januar 2011 09:15
  • Hast du den Style des TabControl mal umgebaut, um das Problem mehr einzuschränken?
    Konkret: Versuchen, ob das TabControl ohne Devices mit mehreren Groups angezeigt werden kann?

     

    Montag, 31. Januar 2011 09:23
    Beantworter
  • Also ja hab ich. Sobald die Zeilen:
     <Setter Property="Content">
    .
    .
    </Setter>
     

      nicht mehr drin sind. Zeigt er die TabItems richtig an. Nur hab ich dann logischerweiße keine dynamisches DataGrid mehr.




    Montag, 31. Januar 2011 09:33
  • Das ist klar, aber so hat man ja schon mal einen Ansatz!
    Bist du noch weiter vorgegangen?
    Also das DataGrid ohne DataTemplates etc.?

     

    Montag, 31. Januar 2011 09:43
    Beantworter
  • Nimm mal alle Sachen mit x:Name raus!

     

    Montag, 31. Januar 2011 09:45
    Beantworter
  • Werde mal kurz rumspielen. Sag gleich bescheid.
    Montag, 31. Januar 2011 09:45
  • Also wenn ich vom DataGrid ItemsSource rausnehm ist der Fehler immer noch da.

    auch wenn ich alle x:Name in Name umgewandelt hab. -.-

     

    Edit: Egal was ich rausnehme es geht nicht, nur wenn das alles weg ist:

     <
    Setter
     Property
    =
    "
    Content
    "
    >
    
    .
    .
    </ Setter >
    Montag, 31. Januar 2011 09:52
  • Ich denke, wenn du einen Namen im Style verwendest, dann wird versucht für jede Gruppe ein DataGrid mit dem enthaltenen Namen hinzuzufügen.
    Dort entsteht dann der Fehler, weil der logische Tree den Namen schon kennt!
    Das umstellen von x:Name nach Name bringt nichts!

     

     

    Montag, 31. Januar 2011 09:58
    Beantworter
  • Erstmal echt Danke für deine Hilfe, finde ich sehr nett.

    Aber auch das entfernen aller Namen hat nichts gebracht. Hab einen kurzen test gemacht:

    <Setter Property="Content">
      <Setter.Value>
       <DataGrid/>
      <Setter.Value>
    </Setter>
    
    

    Funktioniert auch nicht.

    Es iegt anscheinend an Property Content. Kann ich irgednwie anders das DataGrid dynamisch ins TabItem einbinden?

     

     

    Montag, 31. Januar 2011 10:17
  • Versuch mal das ContentTemplate anstatt Content.
    • Als Antwort markiert BtheBeast Montag, 31. Januar 2011 10:36
    Montag, 31. Januar 2011 10:27
    Beantworter
  • Du bist der Wahnsinn! Hier die Lösung:

    <Setter Property="ContentTemplate">
                <Setter.Value>
                  <DataTemplate>
                    <Grid>
                      <DataGrid ItemsSource="{Binding Devices}"></DataGrid>
                    </Grid>
                  </DataTemplate>
                </Setter.Value>
              </Setter>
    
    Vielen Dank!

     

     

     

    • Als Antwort markiert BtheBeast Montag, 31. Januar 2011 10:36
    Montag, 31. Januar 2011 10:35