在我的itemsControl中,项并没有占据整个用户控件的宽度。我使用DataTemplateSelector (手动编写的类)来选择模板的类型。
我检查了post Silverlight: Set Items Widths in ItemsControl to Stretch,但它对我不起作用。项目不会自动伸展和利用整个空间。请帮帮我!提前感谢
<ItemsControl ItemsSource ="{Binding}" Margin="0,5,0,0" HorizontalContentAlignment="Stretch" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:AddressFieldsTemplateSelector Content="{Binding}" x:Name="addressTemplateSelectorObject">
<!-- TextBox template-->
<local:AddressFieldsTemplateSelector.TextBoxDataTemplate>
<DataTemplate>
<Grid Margin="0,0,0,5" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width=".1*" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding AddressFieldName}" Grid.Column="0" Style="{StaticResource DefaultTheme_TextBlockStyle}"/>
<TextBox Text="{Binding AddressFieldValue, Mode=TwoWay}" Grid.Column="2" Style="{StaticResource TextBoxStyle}" TextWrapping="NoWrap" MaxLength="50" HorizontalAlignment="Stretch" />
</Grid>
</DataTemplate>
</local:AddressFieldsTemplateSelector.TextBoxDataTemplate>
</local:AddressFieldsTemplateSelector>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>发布于 2011-08-01 22:40:28
由于星形宽度的原因,数据模板中的项将始终占用所有可用宽度。问题很可能出在itemscontrol本身。是否确定项目控件未包含在StackPanel或自动调整宽度的Grid列中。ItemsControl的HorizontalAlignment是否设置为Left?
https://stackoverflow.com/questions/6899909
复制相似问题