2013-05-11 61 views
1

就拿這個簡單的例子:爲什麼ListBoxItems沒有獲得所有可用空間?

<Grid> 
    <ListBox> 
     <ListBox.ItemTemplate> 
      <DataTemplate > 
       <Grid HorizontalAlignment="Stretch"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="0.5*" /> 
         <ColumnDefinition Width="0.5*" /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="FIRST TEXT" /> 
        <TextBlock Grid.Column="1" Text="SECOND TEXT" /> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     a 
     a 
    </ListBox> 
</Grid> 

據我所知,這應該能顯示在應用程序屏幕的左半邊和右半邊的第二個文本的第一個文本。

而不是這兩個文本是一個接一個。就好像網格認爲所有可用空間都是文本使用的空間。也許我需要在Listbox面板上改變一些東西?

編輯:我已經試過這樣:

<Style TargetType="ListBoxItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Grid> 
         <ContentPresenter HorizontalAlignment="Stretch" /> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

甚至當它的工作原理是breaked的一個ListBoxItem :(

順便提一下的選擇功能,我使用的是Windows 8推遲實施

回答

3

使用HorizontalContentAlignment="Stretch"應用到ListBox看到的解決辦法如下:我已經包括單獨爲您提供方便Background="AntiqueWhite"Background="Aqua",所以你可以看到的行爲兩個TextBlocks的尺寸。

<Grid> 
    <ListBox HorizontalContentAlignment="Stretch"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid HorizontalAlignment="Stretch"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="0.5*" /> 
         <ColumnDefinition Width="0.5*" /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="FIRST TEXT" Background="AntiqueWhite"/> 
        <TextBlock Grid.Column="1" Text="SECOND TEXT" Background="Aqua"/> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     a 
     a 
    </ListBox> 
</Grid> 
+0

這沒有任何區別:( – 2013-05-11 12:29:57

+1

我已經包括瞭解釋,並在我的答案實際的代碼片段,它是在VS 2010中經過測試,工作正常。RGDS, – 2013-05-11 12:57:08

+1

這是正確的答案。 – Xcalibur37 2013-05-11 13:07:30

相關問題