WPF:是否有一种行为类似于HTML span元素的XAML标记?

时间:2011-04-14 15:34:32

标签: wpf field required

来自ASP.NET,这个WPF的东西只是令人困惑。我想做的就是在标签上加上一个红色星号来表示必填字段。玩弄东西,我发现这实际上就是诀窍:

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Label Foreground="Red" Content="*" /><Label Content="Heavy Weight" />
</TextBlock>

由于我刚刚想到这一点,我不相信这是经验丰富的WPF开发人员所采取的学术路线。此外,此标记在星号和标签之间放置了大量的空白区域。在HTML中,span元素只会在其下一个兄弟元素旁边呈现。仅供参考,我尝试在标签中加贴标签,但VS2010一直在咆哮“房产'内容'设置不止一次”。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

这样的事情会更合适:

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Span Foreground="Red">*</Span>Heavy Weight
</TextBlock>

Here概述了TextBlock内容的内容,更具体地说是here

答案 1 :(得分:2)

另一种方式是

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Run Foreground="Red" Text="*" />
    <Run Text="Heavy Weight" />
</TextBlock>

顺便说一句 大马士革的解决方案增加了更多UI元素。 使用CodeNaked的解决方案,很难对文本进行数据绑定。

答案 2 :(得分:1)

解释是你实际上一个接一个地放了两个元素。你需要将它们放入容器中。

我最近做过的带有红色星号的句子的示例代码:

<StackPanel  Orientation="Horizontal" Margin="5" >
            <TextBlock Text="Display name"/>
            <TextBlock Text="*" Foreground="Red" FontWeight="Bold" />
            <TextBlock Text=":"/>
        </StackPanel>

在那里,一切都在StackPanel中,所以属性'content'实际上会设置一次(如果你没有指定像这样的组面板,你只需要添加一个元素)