2013-02-14 15 views
16

WPF ve XAML için çok yeni. Başım ağrıyor, neden şu kodda istediğim yere bir WPF kontrolü yerleştiremiyorum. Sorunum, <canvas></canvas> etiketlerinin bulunduğu yerdir. Bu yere koyduğum her şey bana 'Özellik' içeriğinin bir kereden fazla ayarlandığını ''XAML - 'İçerik' özelliği bir defadan fazla ayarlandı

İçeriğin ayarlandığı basit şartlarda herkes bunu en iyi şekilde açıklayabilir. Bir Grid içinde TabItem bir içeriği sarmak ve TextBlock kullanmak 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 yalnızca bir elemine çıkabilir. İçeriğinizi Canvas etiketinin altına veya Canvas ile aynı seviyeye eklemeyi gerçekten deniyor musunuz (çalışmaz)? –

cevap

26

için metin açıklamasını ekleyerek senin TabItem sen TabItem izin verilmez İçeriğin ek bir öğe ekledi sonra İçerik eklendi . Tuval, Grid, StackPanel gibi bir collection of Children tutabilecek bir Kontrol kullanmanız gerekir. Bunun gibi bir şey deneyin.

+2

Teşekkürler. Mükemmel çalıştı. Açıklamanızın açıklığı nedeniyle size kabul edilen cevabı vermem gerekiyordu. – berniefitz

1

deneyin:

Ben boşuna şu yazılara göz kontrol ettikten metni göster:

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

Bazı kaplar yalnızca 1 öğeye izin verir, diğer kaplar> 1 öğeye izin verir. 'İçerik' bir kereden fazla ayarlandığını belirttiğinizde, bir kapsayıcıya yalnızca 1 öğeye izin veren birden fazla öğe türü koymaya çalıştığınız anlamına gelir.

Belki bu (test) deneyin: Eğer Tuval eklendiğinde

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