我正在使用WPF ListBox,在ItemTemplate中我有一个StackPanel。我试图将StackPanel的宽度绑定到ListBox的ViewportWidth,但我无法找到这样做的方法。如果我将ActualWidth绑定它关闭,但由于垂直滚动条包含在ActualWidth中,我仍然会隐藏在它后面的东西和一个水平滚动条。
请参阅下面的XAML:
<ListBox x:Name="MessagesGrid" Grid.Column="2" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding Path=ActualWidth, ElementName=MessagesGrid}" HorizontalAlignment="Stretch">
<StackPanel Name="ToMe" HorizontalAlignment="Stretch" Visibility="{Binding IsFromMe, Converter={StaticResource BooleanToHiddenConverter}}">
<TextBlock Text="{Binding Date}" FontSize="8" TextWrapping="Wrap" Padding="0,0,60,0"/>
<TextBlock Text="{Binding Text}" FontSize="12" TextWrapping="Wrap" Padding="0,0,60,0"/>
</StackPanel>
<StackPanel Name="FromMe" HorizontalAlignment="Stretch" Visibility="{Binding IsFromMe, Converter={StaticResource BooleanToVisibleConverter}}">
<TextBlock Text="{Binding Date}" HorizontalAlignment="Right" FontSize="8" TextWrapping="Wrap" Padding="60,0,0,0"/>
<TextBlock Text="{Binding Text}" HorizontalAlignment="Right" FontSize="12" TextWrapping="Wrap" Padding="60,0,0,0"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>