51

WPF 和 XAML 非常新。我无法理解为什么我不能在下面的代码中将 WPF 控件放置在我想要的位置。我的问题是<canvas></canvas>标签在哪里。我放在这个地方的任何东西都给了我“属性‘内容’被设置了不止一次’

如果有人可以简单地解释 Content 属性的设置位置,那将是最有帮助的。

我检查了以下文章无济于事: 多次设置属性“内容” 多次 设置属性内容 多次设置属性内容 多次 设置 属性“内容” Button WPF ControlTemplate 导致错误“属性‘内容’被设置了不止一次”

<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>

4

3 回答 3

59

通过将您的文本描述添加到您TabItem添加的内容中,然后当您添加画布时,您添加了一个额外的内容项目,这是TabItem. 您需要使用一个控件,该控件可以容纳一组子项,例如 Canvas、Grid、StackPanel 等。试试这样的方法。

<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>
于 2013-02-14T06:28:06.130 回答
12

某些容器只允许 1 个元素,其他容器允许 >1 个元素。当您收到错误消息“内容”设置不止一次时,这意味着您已尝试将多种类型的元素放入仅允许 1 个元素的容器中。

也许试试这个(未测试):

<TabItem Header="Document Flow" >
<StackPanel>
<TextBlock>This is where the outline of the entire document will be placed. </TextBlock>
<Canvas></Canvas>
</StackPanel>
</TabItem>
于 2013-02-14T06:18:40.907 回答
4

尝试将内容包装TabItem在 a 中Grid并用于TextBlock显示文本:

<TabItem Header="Document Flow" >
    <Grid>
        <TextBlock Text="This is where the outline of the entire document will be placed."/>
        <Canvas></Canvas>
    </Grid>
</TabItem>
于 2013-02-14T06:17:47.297 回答