2011-03-06 79 views
2

我試圖顯示的數據表看起來像這樣在Windows Phone 7(因此我沒有DataGrid控件顯示數據表時:列寬的問題在XAML

(The columns are: Rank, Score, Win-Loss, Name.) 

7 43 22-7 Aaron 
2 13 4-7 Beth 
5 42 3-1 Clark 

而且我使用了一個帶有ItemTemplate的ListBox來查詢這些值並將其打印出來,並使用一個Grid來格式化列表。但是,每個網格條目都是分開的!我希望所有的列都排隊,但是當元素的大小尺寸不一致,不對齊。

這是我正在使用的代碼:

<ListBox x:Name="MyListBox" ItemsSource="{Binding AllPlayers}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Margin="10,0,10,0" Text="{Binding Rank}"/> 
       <TextBlock Grid.Column="1" Margin="10,0,10,0" Text="{Binding Score}"/> 
       <StackPanel Grid.Column="2" Margin="10,0,10,0" Orientation="Horizontal"> 
        <TextBlock Grid.Column="2" Text="{Binding Wins}"/> 
        <TextBlock Grid.Column="2" Text="-"/> 
        <TextBlock Grid.Column="2" Text="{Binding Losses}"/> 
       </StackPanel> 
       <TextBlock Grid.Column="3" Margin="10,0,10,0" Text="{Binding Name}"/> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

有沒有更好的方法來做到這一點?我可以手動設置「網格」列上的像素寬度,但如果可能的話,我寧願讓它自動找出寬度。

回答

2

由於WP7支持一個固定的屏幕像素寬度,因此您可以爲每列設置精確的寬度。使用什麼樣的寬度 - 取決於內容,這取決於你,但這將是保持它們一個尺寸的方式。

+0

啊我應該澄清。我可以這樣做,但我更喜歡「自動」列大小,它可以計算出飛行時的寬度。我想我應該不要懶惰,並找出最大像素寬度。 =) – LCC

+0

當它設置爲自動時,您將最終放棄限制寬度的能力。但是,嘿,那裏還有'MaxWidth'! –