我得到了这个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>
谢谢!
答案 0 :(得分:0)
好吧,我基本上将网格ColumnDefinition
宽度设置为固定宽度,现在可以正常工作。
答案 1 :(得分:0)
这很可能是由父级给出Grid无限布局宽度引起的,这会导致“*”赋予其列无限的布局宽度。这种行为的罪魁祸首是包含Grid的外部StackPanel(水平定向)。其他候选包括Viewbox,DockPanel或在ListBox中使用(ListBoxItem容器对象的默认样式为其内容提供无限的布局宽度。)
你提到它存在于DataTemplate中,它可以暗示最后一种情况。如果是这样,您可以通过设置生成的容器对象的样式来获得所需的行为,使其具有HorizontalContentAlignment =“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>