在ItemsControl中调整网格列的大小?

时间:2016-04-04 15:00:09

标签: wpf xaml mvvm

我有一个ListBox,其ItemsControl绑定到我的视图模型中的一个集合。我试图在DataTemplate中的网格列上使用星形大小,并将该列中的元素(进度条)设置为拉伸。这通常会占用网格中所有可用的水平空间,但是嵌套在ItemsControl中似乎不是这种情况。我已经完成了一些阅读和阅读似乎一起使用这些控件存在已知问题。有解决方案吗?

<ListBox>
    <ItemsControl ItemsSource="{Binding WebMappingSourcesCollection}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid 
                    ShowGridLines="True"
                    Grid.IsSharedSizeScope="true"
                    >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>

                    <CheckBox 
                        Grid.Column="0"
                        HorizontalAlignment="Center" />
                    <TextBlock 
                        Grid.Column="1" 
                        Text="{Binding Name}"/>
                    <ProgressBar Grid.Column="2"
                        Minimum="0" 
                        Maximum="100" 
                        Value="30"
                        HorizontalContentAlignment="Stretch"                                                           
                        HorizontalAlignment="Stretch"     
                        MaxHeight="15"
                    /> 
                    <!-- etc. etc. -->

1 个答案:

答案 0 :(得分:2)

尝试通过下面的HorizontalContentAlignment设置您的列表框项目ItemContainerStyle

<ListBox>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
相关问题