0

我得到了这个 XAML 代码,我已经尝试让它工作了几个小时(我对 WPF 很陌生)。如果没有足够的空间,我基本上想要TextBlock换行符中的文本。

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="60" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <Image Source="{Binding Path=imageurl}" Width="60" Height="60" Grid.Column="0" />
  <TextBlock TextWrapping="Wrap" Text="{Binding Path=content}" Grid.Column="1" />
</Grid>

谢谢!

4

2 回答 2

0

这很可能是由于父级为 Grid 提供了无限的布局宽度,这导致“*”为其列提供了无限的布局宽度。这种行为的一个可能罪魁祸首是包含 Grid 的外部 StackPanel(水平方向)。其他候选对象包括 Viewbox、DockPanel 或在 ListBox 中使用(ListBoxItem 容器对象的默认样式为其内容提供了无限的布局宽度。)

您提到它在 DataTemplate 中,这可能暗示了最后一种情况。如果是这样,您可以通过设置生成的容器对象的样式使其具有 Horizo​​ntalContentAlignment="Stretch" 来获得所需的行为。

        <ListBox Margin="3,0,3,3" HorizontalContentAlignment="Stretch"
                 ItemsSource="{Binding Items}">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>
于 2013-04-02T18:43:30.523 回答
0

好吧,我基本上将网格ColumnDefinition宽度设置为固定宽度,现在它可以工作了。

于 2013-04-02T18:31:32.710 回答