2009-07-09 9 views
40

Bir ItemTemplate bir ListBox bir TextBlock ve ComboBox oluşan sahiptir. Sorun TextBlock içindeki metnin genişliği her öğe için aynı değildir ve ComboBox kontrolleri hizalanmamıştır olmasıdır.
Bunu nasıl en geniş biridir, bu yüzden tüm öğeleri aynı genişlikte şablonda TextBlock ayarlayabilirsiniz?WPF bir liste kutusunda bir sütun tüm öğeler için aynı genişlikte yapabilir?

<ListBox MinHeight="100" ItemsSource="{Binding Trainees}"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid Margin="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBlock VerticalAlignment="Center" Grid.Column="0"> 
      <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0}, {1}"> 
       <Binding Path="LastName" /> 
       <Binding Path="FirstName" /> 
      </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
     <ComboBox HorizontalAlignment="Left" Grid.Column="1" 
      ItemsSource="{Binding Source={StaticResource Functions}}" SelectedValue="{Binding Path=Function}" 
      MinWidth="100" /> 
     </Grid> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

cevap

63

Sen IsSharedSizeScope ekli özelliğini kullanabilirsiniz:

İşte benim xaml olduğunu. şablonunuzu tanımda, böyle her bir sütuna "paylaşılan boyut grubu" takmak:

<Grid.ColumnDefinitions> 
    <ColumnDefinition SharedSizeGroup="col1" /> 
    <ColumnDefinition SharedSizeGroup="col2" /> 
</Grid.ColumnDefinitions> 

... o boyuta her bir "boyut grubu" Aynı bilmesi için o zaman ortak bir boyut kapsamı olarak ListBox tanımlamak yol:

<ListBox Grid.IsSharedSizeScope="True">...</ListBox> 
+0

Mükemmel, teşekkürler –

İlgili konular