2010-01-17 68 views
2

具有以下的WPF代码的宽度和高度:[WPF]如何设置一个网格数据模板

<Window x:Class="WpfApplication5.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:c="clr-namespace:WpfApplication5" 
Title="Window1" Height="300" Width="300"> 
<Window.Resources> 
    <c:Places x:Key="PlacesData"/> 
    <DataTemplate x:Key="DataTemplate" DataType="{x:Type c:Place}"> 
     <Grid HorizontalAlignment="Left" 
       > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="40"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
      <TextBlock Grid.Column="1" Text="{Binding State}" TextAlignment="Right"/> 
     </Grid> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <ListBox ItemsSource="{Binding Source={StaticResource PlacesData}}" 
      ItemTemplate="{StaticResource DataTemplate}" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      ScrollViewer.CanContentScroll="False" 
      HorizontalContentAlignment="Stretch"/> 
</Grid> 

输出是这 alt text http://img51.imageshack.us/img51/3977/listboxscreenshot.jpg

我想状态码总是显示在列表框的右侧,如果我调整窗口的大小,这也会发生。

任何想法?

回答

2

确保每个ListBoxItemHorizontalContentAlignment设置为Stretch

<ListBox> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

我不工作。同样的问题 – Alin 2010-01-17 17:53:09

2

让你的网格的HorizontalAlignmentStretch,不Left

<DataTemplate x:Key="DataTemplate" DataType="{x:Type c:Place}"> 
    <Grid HorizontalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="40"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
     <TextBlock Grid.Column="1" Text="{Binding State}" TextAlignment="Right"/> 
    </Grid> 
</DataTemplate> 
+0

Thx亚当。您的解决方案有效 – Alin 2010-01-17 18:20:09

+3

我的荣幸。虽然我不得不问为什么你将其他答案标记为正确答案:) – 2010-02-18 05:39:22