2011-04-14 118 views
2

来自ASP.NET,这个WPF的东西只是令人困惑。我想要做的就是在标签上加一个红色星号来表示必填字段。有东西玩的时候,我发现,这实际上做的伎俩:WPF:是否有一种类似HTML span元素的XAML标签?

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

是,我刚刚想出了这个,我不相信它是学术路线经验丰富的WPF开发人员将需要。此外,这个标记在星号和标签之间放置了大量的空白区域。在HTML中,span元素只会在其下一个兄弟元素旁边呈现。仅供参考,我试图在标签中添加标签,但VS2010一直在大肆宣扬“该物业的内容”不止一次被设置“。

任何想法?

回答

1

解释是你实际上把两个元素依次放在一起。你需要把它们放入一个容器中。

与红色星号我最近一个句子的只是一个示例代码:

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

在那里,一切都在一个StackPanel,所以财产“内容”实际上将设置一次(如果你不指定一组面板如这一个,你必须只有一个元素添加)

+0

这绝对是我寻找的更多学术路线。然而,尽管更合适,文本全部集中在我的网格单元格的左上角。当我将文本块更改为标签时,我仍然得到空白。我正在把它填充到填充问题。如果我使填充= 0,那么元素会尽可能向下并向左移动。我想我可以从左侧或右侧移除填充。我会检查它。 – oscilatingcretin 2011-04-14 16:05:57

+0

这是正常的,你的文字卡在左上角 - 你指定它:'Horizo​​ntalAlignment =“Left”VerticalAlignment =“Top”'。将这两个值更改为Center,并且它应该为您忘记提及 – Damascus 2011-04-14 16:29:55

4

像这样的事情会更合适:

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

Here是什么可以进入一个TextBlock的内容,更具体here的概述。

1

另一种方式是

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

BTW 大马士革的这样lution增加了更多的UI元素。使用CodeNaked的解决方案时,它很难对文本进行数据绑定。

+0

。运行的Text属性只能在特定的.net版本之后进行数据绑定。 – krishnaaditya 2011-04-14 16:52:47

相关问题