WPF:按钮没有在列表框中使用完整的 space
WPF: Button not taking the full space in a Listbox
我有一个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>
我目前遇到的问题是我的按钮没有完全使用 space:
- 如何确保它使用所有可用的space?
- 有什么方法可以确保所有按钮的高度等于宽度吗?
(明确一点,我不想在按钮上设置任何内容,因为它们将由 Prism 从不同的模块提供)
当我 运行 应用程序并聚焦一个对象时,我们似乎看到 ListBoxItem
占据了全部位置,但里面的 Button 没有:
How to make sure it use all the available space?
这是由于 ListBox
控件模板的设计方式所致。要删除按钮左右两侧的小边距,请为 ListBoxItem 样式设置 Padding=0。
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
Is there some way to ensure that all buttons will be have the height = to the width?
您可以执行 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>
我有一个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>
我目前遇到的问题是我的按钮没有完全使用 space:
- 如何确保它使用所有可用的space?
- 有什么方法可以确保所有按钮的高度等于宽度吗?
(明确一点,我不想在按钮上设置任何内容,因为它们将由 Prism 从不同的模块提供)
当我 运行 应用程序并聚焦一个对象时,我们似乎看到 ListBoxItem
占据了全部位置,但里面的 Button 没有:
How to make sure it use all the available space?
这是由于 ListBox
控件模板的设计方式所致。要删除按钮左右两侧的小边距,请为 ListBoxItem 样式设置 Padding=0。
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
Is there some way to ensure that all buttons will be have the height = to the width?
您可以执行 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>