2013-05-11 2 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?

EDIT: Я попытался это:

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

И даже тогда, когда он работает он вскрыт выбранную особенность ListBoxItem :(

Кстати, я работаю на Windows, лепешку 8

ответ

3

Использование HorizontalContentAlignment="Stretch" применяется к ListBox см решение перечисленных ниже Примечание:.. Я включил отдельный Background="AntiqueWhite" и Background="Aqua" для вашего удобства, чтобы вы могли видеть акт ual размер обоих текстовых блоков.

<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

Это не делает никакой разницы :( –

+1

я включил объяснение и фактический фрагмент кода в моем ответе. Это было проверено в VS 2010 и работает отлично. Rgds, –

+1

Это правильный ответ. – Xcalibur37

Смежные вопросы