【发布时间】:2009-06-19 14:37:43
【问题描述】:
我想知道,这是在 WPF 中获得众所周知的标签输入 [或输出,无关紧要] 组合的最好和最快的方法。它是一个简单的任务,想想“对象”ME的快速输出:
姓名 - 克里斯蒂安
年龄 - 28 岁
心情 - 好
我知道,我可以将 Grid 与 TextBlocks 一起使用。但老实说,“短”的 XAML 有将近半页长(每个标签上的 RowDefinitions、ColDefs、Grid.Col)
另一种方法,使用三个 StackPanels(水平)和一个垂直似乎也有点愚蠢。在这种情况下,我必须给每个标签一个固定的宽度,以使缩进正确。而且它只是“感觉”不对。
因此,鉴于上述情况,您有一个具有 3-6 个属性的自定义对象,您只想将其作为只读转储到您的 GUI,您将如何做(在 WPF 中,Silverlight 也是,如果您真的有心情:)。
当然,我可以为此编写一个用户控件。但是为什么要重新发明轮子,如果它可能已经存在的话......
最后,为了进一步说明,我刚刚在现实生活中创建的示例也是本文发布的原因:
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Log Count" Width="100"/>
<TextBlock Text="{Binding LastLogRun.LogMessageCount}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Start Time" Width="100"/>
<TextBlock Text="{Binding LastLogRun.StartTime}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="End Time" Width="100"/>
<TextBlock Text="{Binding LastLogRun.EndTime}"/>
</StackPanel>
</StackPanel>
【问题讨论】:
-
您似乎要求两件事“最佳/最佳实践”和“最快/快速输出/转储”。你想要哪一个? Bryan A. 为您提供了一个快速的解决方案,Joe W. 为您提供了一个很好的格式化解决方案,您在问题中忽略了它......
-
是的,你是对的,这不是最好的问题。我认为 Bryan A. 答案尽可能短,我喜欢它用于真正快速和肮脏的东西而无需格式化。用户控制方法也非常好,也许它得到了一点点投票。谢谢大家的想法...
-
我个人倾向于为此使用网格,但您似乎要求最短的 XAML。如果你要做很多事情或者你想提高性能,我会使用 ListView 或 ListBox 制作一个用户控件。