2010-01-17 1 views
2

Имея следующий код МОФ:[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

Обеспечить HorizontalContentAlignment каждого ListBoxItem устанавливается в Stretch:

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

Я не работаю. Та же проблема – Alin

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 Adam. Ваше решение работает – Alin

+3

Мое удовольствие. Хотя я должен был бы спросить, почему вы отметили другой ответ как правильный ответ :) –

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