我有一个ListBox
,其中我将通过棱镜添加一些Button
。
现在,我有以下代码(这里有一些虚拟按钮仅用于测试目的:
<DockPanel LastChildFill="True">
<ListBox HorizontalContentAlignment="Stretch" Padding="0" Margin="0" BorderBrush="Black" DockPanel.Dock="Left" HorizontalAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Resources>
<Style TargetType="Button">
<Setter Property="Height" Value="60" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Margin" Value="0" />
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.Resources>
<Button>Button 1</Button>
<Button >Button 2</Button>
</ListBox>
<ContentControl></ContentControl>
</DockPanel>
我目前遇到的问题是我的按钮没有占据整个空间:
(为了清楚起见,我不想在按钮上设置任何内容,因为它们将由不同模块的Prism提供)
当我运行应用程序并聚焦一个对象时,似乎我们看到ListBoxItem
占据了整个位置,但内部的Button不是:
答案 0 :(得分:2)
如何确保它使用所有可用空间?
这是由ListBox
控件模板的设计方式决定的。要删除按钮左侧和右侧的小边距,请为ListBoxItem样式设置Padding = 0。
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
有没有办法确保所有按钮的高度都是宽度?
您可以执行RelativeSource
绑定,将容器的高度绑定到父ListBox
的实际宽度:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource AncestorType=ListBox},Path=ActualWidth}" />
</Style>
</ListBox.ItemContainerStyle>