2013-02-14 24 views
16

Sehr neu in WPF und XAML. Ich kann nicht verstehen, warum ich im folgenden Code kein WPF-Steuerelement platzieren kann, wo ich möchte. Mein Problem ist, wo die <canvas></canvas> Tags sind. Alles, was ich an diesen Ort gebe, gibt mir 'Die Eigenschaft' Inhalt 'ist mehr als einmal gesetzt'XAML - Die Eigenschaft 'Inhalt' ist mehr als einmal festgelegt

Wenn jemand in einfachen Worten erklären könnte, wo die Content-Eigenschaft gesetzt ist, wäre das sehr hilfreich.

Ich habe die folgenden Artikel ohne Erfolg ausgecheckt: the property 'Content' is set more than once the property content is set more than once Property content is set more than once The property 'Content' is set more than once Button WPF ControlTemplate causeing error "The property 'content' is set more than once"

<Window x:Class="PDFIndexer.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid x:Name="ParentGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="1*" /> 
     <RowDefinition Height="25" /> 
    </Grid.RowDefinitions> 
    <Menu Grid.Row="0" > 
     <MenuItem Header="File" > 
      <MenuItem Header="Open Project" Click="MenuItem_Click_1"></MenuItem> 
      <MenuItem Header="Save Project"></MenuItem> 
      <MenuItem Header="Close Project"></MenuItem> 
      <Separator></Separator> 
      <MenuItem Header="Exit"></MenuItem> 
     </MenuItem> 
     <MenuItem Header="Edit"></MenuItem> 
    </Menu> 
    <TabControl Grid.Row="1"> 
     <TabItem Header="Document Flow" > 
      This is where the outline of the entire document will be placed. 
      <Canvas></Canvas> 
     </TabItem> 
     <TabItem Header="Preview"> 
      This is where the preview will be drawn to screen. 
     </TabItem> 
     <TabItem Header="Resources"> 
      This is where the resources { graphic files, fonts, data files } 
     </TabItem> 
     <TabItem Header="Code Library"> 
      This is where the user can save re-usable bits of code. Useful when adding intel barcodes or Address blocks etc... 
     </TabItem> 
    </TabControl> 


    <StatusBar Grid.Row="2"> 
     Items 
    </StatusBar> 
</Grid> 

+2

TabItem kann nur ein Element enthalten. Versuchen Sie wirklich, Ihren Inhalt unter dem Canvas-Tag oder auf derselben Ebene mit dem Canvas hinzuzufügen (funktioniert nicht)? –

Antwort

26

Durch Ihre Textbeschreibung mit denen Sie Ihren TabItem Sie hinzugefügt Inhalt dann, wenn Sie die Leinwand hinzugefügt Sie ein zusätzliches Element des Inhalts hinzugefügt, die nicht für die TabItem erlaubt ist . Sie müssen ein Steuerelement verwenden, das ein collection of Children wie Canvas, Grid, StackPanel etc. enthalten kann. Versuchen Sie etwas wie das.

<TabControl Grid.Row="1"> 
    <TabItem Header="Document Flow"> 
     <Canvas> 
      <TextBlock> 
       This is where the outline of the entire document will be placed. 
      </TextBlock> 
     </Canvas> 
    </TabItem> 
    <TabItem Header="Preview"> 
     This is where the preview will be drawn to screen. 
    </TabItem> 
    <TabItem Header="Resources"> 
     This is where the resources { graphic files, fonts, data files } 
    </TabItem> 
    <TabItem Header="Code Library"> 
     This is where the user can save re-usable bits of code. Useful when adding intel barcodes or Address blocks etc... 
    </TabItem> 
</TabControl> 
+2

Danke. Arbeitete perfekt. Ich musste Ihnen aufgrund der Klarheit Ihrer Erklärung die akzeptierte Antwort geben. – berniefitz

1

Versuche mit einem Gehalt von TabItem in einem Grid zu wickeln und verwenden TextBlock zu Zeige Text:

<TabItem Header="Document Flow" > 
    <Grid> 
     <TextBlock Text="This is where the outline of the entire document will be placed."/> 
     <Canvas></Canvas> 
    </Grid> 
</TabItem> 
1

Bestimmte Container erlauben nur 1 Element, andere Container erlauben> 1 Element. Wenn Sie die Fehlermeldung "Inhalt" mehrmals erhalten, bedeutet dies, dass Sie versucht haben, mehr als einen Elementtyp in einen Container zu legen, der nur 1 Element zulässt.

Vielleicht versuchen (nicht getestet):

<TabItem Header="Document Flow" > 
<StackPanel> 
<TextBlock>This is where the outline of the entire document will be placed. </TextBlock> 
<Canvas></Canvas> 
</StackPanel> 
</TabItem> 
Verwandte Themen