内容设置不止一次

时间:2014-09-18 18:01:40

标签: c# wpf xaml

在Visual Studio 2013中使用WPF时,我遇到了一个错误:

  

错误2属性'内容'设置不止一次。

     

错误1属性"内容"只能设置一次

现在,首先。我转向谷歌搜索错误消息&得到了一个链接到StackOverflow的顶级结果。

XAML - The property 'Content' is set more than once

the property 'Content' is set more than once

Property content is set more than once

包括MSDN帖子:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/686be076-954f-4373-a2e6-fc42a6a27718/error-the-property-content-is-set-more-than-once?forum=wpf

虽然基于原始海报代码呈现了信息性定制解决方案的集合,但我还没有遇到一个实际的基本解决方案,详细说明了此错误的原因(XAML新手)虽然这可能是多个报告问题的副本。我个人宁愿避免发布有问题的代码来获得量身定制的解决方案。我更愿意来到这里,并询问社区的原因,为什么新手XAMP / WPF开发人员可能会遇到这个应用程序和解决方案&没有那么多顶级,顶级的最佳实践。而是来自更多WPF / XAMP开发人员的建议,关于如何轻松识别解决方案并继续进行未来的进一步调试步骤


为了论证:

<Window x:Class="WPFT.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="197.198" Width="427.95">
    <TextBlock>Hello</TextBlock>
    <TextBlock>World</TextBlock>
</Window>

2 个答案:

答案 0 :(得分:6)

一个窗口只能包含1个元素。

在您的代码中

<Window x:Class="WPFT.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="197.198" Width="427.95">
    <TextBlock>Hello</TextBlock>
    <TextBlock>World</TextBlock>
</Window>

你的窗口有2个文本块 你应该尝试像

这样的东西
<Window x:Class="WPFT.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="197.198" Width="427.95">
    <Grid>
        <TextBlock>Hello</TextBlock>
        <TextBlock>World</TextBlock>
    </Grid>
</Window>

答案 1 :(得分:5)

如果使用Content依赖项属性在任何UIElement中设置多个元素,则会出现此错误。您需要在面板中包含多个元素,以便Content属性只有一个子元素。例如......

<Button>
    <StackPanel Orientation="Horizontal">
        <Image />
        <TextBlock />
    </StackPanel>
</Button>

<Border>
    <StackPanel>
        <TextBlock />
        <Image />
        <DatePicker />
    </StackPanel>
</Border>

Button和Border元素之间的区域是用于指定的简写:

<Button>
    <Button.Content>
        <!-- Content goes here -->
    </Button.Content>
</Button>