2012-02-13 73 views
0

我想创建一个列表框模板(对于项目)。这是我得到的。如何对齐TextBlock =在列表框模板中拉伸?

<Window.Resources> 
    <DataTemplate x:Key="ItemTemplate"> 
     <Grid Margin="5"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="60"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <StackPanel Grid.Column="0"> 
       <TextBlock Text="TEKS" FontSize="20" FontWeight="Bold" Background="#FF502F8F" Foreground="White" Width="{Binding Path=Width, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}}}" TextAlignment="Center" /> 
       <TextBlock Text="{Binding Level}" FontSize="24" Background="#FF058C44" HorizontalAlignment="Center" Width="{Binding Path=Width, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}}}" Foreground="White" TextAlignment="Center" FontFamily="Segoe UI Light" /> 
      </StackPanel> 
      <TextBlock Grid.Column="1" Text="{Binding Owner}" FontSize="20" FontWeight="Bold" TextWrapping="Wrap" /> 
     </Grid> 
    </DataTemplate> 
</Window.Resources> 

<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}"> 
    <ListBox ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" Margin="44,39,82,103" Style="{DynamicResource ListBoxStyle}"/> 
</Grid> 

这就是它的外观。

enter image description here

你能看到的文本块更扩展了宽度?我想显示列表框中的字符串换行。我究竟做错了什么?

+0

我认为你需要设置文本块的宽度 - 否则它会增长以适应内容。 – 2012-02-13 22:27:42

+0

您是否尝试使用width = auto作为文本块? – 2012-02-13 22:28:49

回答

2
  1. 禁用水平滚动:

    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...> 
    
  2. 启用文本换行(已经是这样了):

    <TextBlock TextWrapping="Wrap" ...> 
    
+0

瓜,它工程H.B.还有一个问题,你知道如何对齐堆栈面板中的所有文本块(我的意思是strentch)。 – 2012-02-13 22:42:39

+0

您目前在较低的'TextBlock'上设置'Horizo​​ntalAlignment ='Center''应该设置为'Stretch'。 – 2012-02-13 22:51:44

+0

非常感谢H.B.这是工作! – 2012-02-13 22:55:48