Wpf 对象';标签';已具有子级,无法添加''';标签';我只能接受一个孩子

Wpf 对象';标签';已具有子级,无法添加''';标签';我只能接受一个孩子,wpf,xaml,Wpf,Xaml,我试图使用另一个SO用户提供的帮助器类在标签上应用stringformatting。但是,当我应用他的解决方案时,我得到以下错误: 对象“Label”已经有子对象,无法添加“”标签“只能接受一个孩子。 标签如下: <Label Grid.Column="1" Grid.Row="1"> <ui:Helper.Text> <PriorityBinding> <Binding Path="Work

我试图使用另一个SO用户提供的帮助器类在标签上应用stringformatting。但是,当我应用他的解决方案时,我得到以下错误:

对象“Label”已经有子对象,无法添加“”标签“只能接受一个孩子。

标签如下:

<Label Grid.Column="1"
       Grid.Row="1">
    <ui:Helper.Text>
        <PriorityBinding>
            <Binding Path="Worker.Employer.Name" StringFormat="Employer: {0}" />
            <Binding Source="Unemployed" />
        </PriorityBinding>
    </ui:Helper.Text>
    <Binding RelativeSource="{RelativeSource Self}" Path="(ui:Helper.Text)" />
</Label>


错误指向“Binding RelativeSource…”行。我能做些什么来解决这个问题?我想使用
Label
s而不是
TextBlock
s,但它已经到了不值得使用的地步。

在没有测试I的情况下,我想附加属性的定义中有一个bug,因为它附加到
助手
类本身,而不是
Label
。这样,您只需在标签内容中创建一个新的
Helper
实例。然后将绑定添加到内容时,会出现异常,因为已经存在内容

实际上,我看不出有什么理由让它成为附加属性,而绑定到self的附加属性对我来说似乎很笨拙

尝试以下方法;通过将
RegisterAttached(…)
替换为
Register(…)
,使Helper.Text成为一个普通的依赖属性。(将helper重命名为类似于
复合字符串
)的名称,然后将复合字符串定义为标签的资源,并将标签的内容绑定到此资源:

<Label>
    <Label.Resources>
        <ui:CompositeString>
            <ui:CompositeString.Text>...</ui:CompositeString.Text>
        </ui:CompositeString>
    </Label.Resources>
    <Label.Content>
        <Binding Path="Text" Source="{StaticResource Test}" />
     </Label.Content>
</Label>

...

请注意,在绑定到内容之前需要定义资源,这就是为什么绑定会有自己的标记。

如果没有测试i,我想附加属性的定义中有一个错误,因为它附加到
帮助程序
类本身,而不是
标签
。这样,您只需在标签内容中创建一个新的
Helper
实例。然后将绑定添加到内容时,会出现异常,因为已经存在内容

实际上,我看不出有什么理由让它成为附加属性,而绑定到self的附加属性对我来说似乎很笨拙

尝试以下方法;通过将
RegisterAttached(…)
替换为
Register(…)
,使Helper.Text成为一个普通的依赖属性。(将helper重命名为类似于
复合字符串
)的名称,然后将复合字符串定义为标签的资源,并将标签的内容绑定到此资源:

<Label>
    <Label.Resources>
        <ui:CompositeString>
            <ui:CompositeString.Text>...</ui:CompositeString.Text>
        </ui:CompositeString>
    </Label.Resources>
    <Label.Content>
        <Binding Path="Text" Source="{StaticResource Test}" />
     </Label.Content>
</Label>

...

请注意,在绑定到内容之前需要定义资源,这就是为什么绑定会有自己的标记。

看起来就像xaml的一个例子,假设您附加的属性是
标签的
内容

只需将实际的
内容
包装成一个明确的


看起来就像xaml的一个例子,假设您的附加属性是
标签的
内容

只需将实际的
内容
包装成一个明确的



那么它应该放在哪里?如果将其与其他绑定放在一起,则标签将不显示任何内容。我是一个初学者,我正要回答另一个问题。这里的这个问题,具体来说:那么它应该去哪里?如果将其与其他绑定放在一起,则标签将不显示任何内容。我是这里的初学者,正要回答另一个问题。具体来说,这个问题: