2
我在Silverlight中有一个ItemsControl来显示对象列表。这些对象包含字符串名称,值和单位,例如“Load”,“100”和“MW”。该控件位于网格列内,根据浏览器窗口的大小可以改变大小。我试图格式化DataTemplate以允许名称字符串位于左侧,值和单位在右侧。例如...Silverlight ItemsControl格式
|Load 100 MW |
|Load2 50 MW |
|Unit1 20 X |
|Unit2 130 YXZ|
经过大量的试验和错误我已经设法通过使用两栏的网格得到这个工作。左侧包含名称和右侧,包含一个包含值和单位的堆叠面板。这似乎是行得通的,但如果有任何长度不同的单位,文本的排列不起作用。例如...
|Load 100 MW|
|Load2 50 MW|
|Unit1 20 X|
|Unit2 130 YXZ|
我对如何格式化这方面的想法已经过时了。任何人都可以提出建议重点是我不知道名称,值或单位字符串的长度,当主列更改大小时,名称必须保留在左侧,并且值和单位在右侧。
由于提前,第
(这里是到目前为止的代码)
<ItemsControl Name="DataTypesGrid" ItemsSource="{Binding}" Margin="0,8,0,0" BorderBrush="{x:Null}" Foreground="White" Background="{x:Null}" IsEnabled="True">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Margin="0,2,0,0" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" HorizontalAlignment="Left" Grid.Column="0"/>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Text="{Binding Value}" HorizontalAlignment="Right" Margin="0,0,4,0"/>
<TextBlock Text="{Binding Unit}" HorizontalAlignment="Right"/>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
感谢您的答复(在所有“单元”的TextBlocks使用)。你是对的,我非常喜欢数据网格功能,事实上这是我的第一选择。然而,当使用格式化时,我发现不可能删除所有格式,更重要的是选择行。我需要它在页面中显示为普通文本,因为它只是显示数据的许多位置之一,我需要它们都具有相同的格式。 我可能不得不坚持最小宽度的想法,尽管计算方法听起来很有趣。我得看看它。谢谢 :) – Captastic