我正在尝试在 ListView 数据模板中创建一个停靠面板,该模板占用其父选项卡控件的所有可用宽度。我首先将我的 XAML 基于 this question因此想出了这个:
<TabControl x:Name="tabControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TabItem Header="Clipboard Buffer">
<ListView Name="clipboardListView" ScrollViewer.CanContentScroll="True">
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderThickness="2" BorderBrush="Black" CornerRadius="2,2,2,2">
<DockPanel Background="AliceBlue" Width="{Binding ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}}">
<TextBlock Text="{Binding Text}" DockPanel.Dock="Top" />
</DockPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</TabItem>
...
这几乎可以工作,但是停靠面板似乎总是比选项卡控件中的可用空间稍宽一点,如您在此处所见。
我可以使用滚动条移动并看到停靠面板的末端,正如人们所期望的那样......
但是,如果我尝试重新调整窗体的大小,停靠面板仍然略大于选项卡控件中的可用空间量。
我在这里错过了什么?如何使我的停靠面板保持在其父选项卡控件的宽度内?
最佳答案
试试这个:
<TabControl x:Name="tabControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TabItem Header="Clipboard Buffer">
<ListView Name="clipboardListView" ScrollViewer.CanContentScroll="True" HorizontalContentAlignment="Stretch">
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderThickness="2" BorderBrush="Black" CornerRadius="2,2,2,2" >
<DockPanel Background="AliceBlue" >
<TextBlock Text="asdfasdkfhkasdfkasdgfkjhdgfkuwegyfkwegfbkuweyfuksyadukfykweugbyfu" DockPanel.Dock="Top" />
</DockPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</TabItem>
</TabControl>
注意 ListView 中的 HorizontalContentAlignment="Stretch"
关于c# - WPF Dockpanel 超出父级的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747422/