WP8 - 当文本太长时,XAML网格列扩展

时间:2014-04-29 12:28:13

标签: wpf xaml windows-phone-8

我有一个包含列定义的网格。 只要列单元格内的文本超出指定的宽度,它就会缩小左侧列。

这是一个例子

example of shrinking column cell

这是我的xaml标记

<ItemsControl Name="rfbItems" ItemsSource="{Binding}" 
            Style="{StaticResource contentItemsControl}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" Width="Auto" HorizontalAlignment="Left" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.3*" />
                    <ColumnDefinition Width="0.7*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Title}" Style="{StaticResource App_Content_Grid}" TextAlignment="Left" />
                <TextBlock Grid.Column="1" Text="{Binding Description}" Style="{StaticResource App_Content_Grid_Subtle}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

如何在不失去布局响应的情况下限制此行为? 此外,如果有更好的方法来实现我在这里尝试做的事情(在datatemplate内),请随时分享:)

3 个答案:

答案 0 :(得分:2)

尝试将边距和水平对齐设置为文本框,如下所示:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.3*" />
        <ColumnDefinition Width="0.7*" />
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Column="0" Margin="5" HorizontalAlignment="Stretch" Text="{Binding Title}" Style="{StaticResource App_Content_Grid}" TextAlignment="Left" />
    <TextBlock Grid.Column="1" Margin="5" HorizontalAlignment="Stretch" Text="{Binding Description}" Style="{StaticResource App_Content_Grid_Subtle}" />

</Grid>

答案 1 :(得分:2)

除非您为StackPanel指定固定宽度,否则网格的宽度不会有限。设置Width =“123”应该有效,Horizo​​ntalAlignment =“Stretch”也可以这样做(未经测试)。

答案 2 :(得分:1)

我很抱歉你的所有努力,但我找到了解决方案。 没有一个答案对我有用,所以请随意找到合适的解决方案,我会接受你的回答。

<ItemsControl Name="rfbItems" ItemsSource="{Binding}" 
            Style="{StaticResource contentItemsControl}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" Width="Auto" HorizontalAlignment="Left" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="125" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0" Text="{Binding Title}" Style="{StaticResource App_Content_Grid}" TextAlignment="Left" />
                <TextBlock Grid.Column="1" Text="{Binding Description}" Style="{StaticResource App_Content_Grid_Subtle}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

第一列具有固定宽度,这就是第二列不能再展开的原因。