繁体   English   中英

xaml的3列网格未占用预期空间

[英]3 column grid for xaml is not taking up expected space

我有以下xaml:

    <DataTemplate x:Key="ActivityStreamItemTemplate">
        <StackPanel VerticalAlignment="Top" Margin="5,0,0,0">
            <Button Command="{Binding Path=DataContext.LoadSpacesCommand, ElementName=OrganisationList}" CommandParameter="{Binding}" Padding="-5,0,-5,-5" Margin="-7,-12,-7,-7" Height="auto" BorderThickness="0" HorizontalAlignment="Left" VerticalAlignment="Stretch" HorizontalContentAlignment="Left" UseLayoutRounding="True" FontSize="0.01">
                <Grid Height="auto">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="67" />
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="67" />
                    </Grid.ColumnDefinitions>
                    <StackPanel Height="auto" Grid.Column="0" Background="Transparent">
                        <Border Background="Transparent" BorderThickness="0" Width="62" Height="62" HorizontalAlignment="Left" Margin="0,0,0,5">
                            <Image Source="{Binding created_by.image.link}" Width="62" Height="62"></Image>
                        </Border>
                    </StackPanel>
                    <StackPanel Height="auto" Grid.Column="1">
                        <TextBlock Text="{Binding type}" HorizontalAlignment="Left" FontSize="30" VerticalAlignment="Center" Margin="0,0,0,5" Foreground="White" />
                        <TextBlock Text="{Binding ttitle}" HorizontalAlignment="Left" FontSize="15" VerticalAlignment="Center" Margin="0,0,0,5" Foreground="White" TextWrapping="Wrap" MaxWidth="Infinity" />
                        <TextBlock Text="{Binding created_by.name}" HorizontalAlignment="Left" FontSize="11" VerticalAlignment="Center" Margin="0,0,0,5" Foreground="White" />
                    </StackPanel>
                    <StackPanel Height="auto" Grid.Column="2">
                        <TextBlock Text="{Binding comment_count}"></TextBlock>
                    </StackPanel>
                </Grid>
            </Button>
        </StackPanel>
    </DataTemplate>

如您所见,我希望将网格的第一列设置为67 ..完美,并且工作正常...

下一列需要尽可能多地填充屏幕,然后减去其后的额外列宽。

我该怎么做呢?

与此相关的某种联系: 如何在自动列宽度内TextWrap一个TextBlock? 但我无法使*工作正常……我不确定它是否确实可以满足我的需要

这是因为您拥有:

MaxWidth="Infinity"

在您的TextBlock和

<ColumnDefinition Width="Auto"/>

在您的专栏上。

这意味着XAML认为它可以根据自己的喜好增加该列。

如果要换行,则必须对列的宽度,网格的宽度或堆栈面板的宽度提供限制。

如果希望中间列占用剩余空间,则只需使用*指定其宽度即可:

<ColumnDefinition Width="*"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM