2009-07-09 70 views
40

我有一個ListBoxItemTemplateTextBlockComboBox組成。問題是TextBlock中的文本寬度對每個項目都不相同,並且ComboBox控件未對齊。
如何在模板中設置TextBlock以便所有項目具有相同的寬度,即最寬的一個?如何在WPF的列表框中爲所有項目設置相同的寬度列?

這是我的XAML:

<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> 

回答

63

可以使用IsSharedSizeScope附加屬性。在你的模板定義,附加一個「共享尺碼組」,以每列,例如:

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

...然後定義你的ListBox作爲共享的大小範圍,所以它知道大小每一個「尺碼組」相同方式:

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

完美,謝謝 – 2009-07-09 09:26:17

相關問題