如何在WPF中设置容器的圆角半径

时间:2018-04-07 08:59:21

标签: c# wpf xaml

我在我的应用程序中使用了Listbox。我想在不使用资源的情况下为listbox项设置角半径。我使用borderthickness设置设置了itemsContainer,边框画笔和背景,但那里没有角半径属性。通过使用资源,可以访问唯一的cornerradius属性。

如何在不使用资源的情况下实现这一目标?

我是.Net开发的新手,所以请提出任何建议来解决这个问题,

  <ListBox.ItemContainerStyle>              
                <Style TargetType="ListBoxItem">
                    <Setter Property="BorderThickness" Value="1"/>
                    <Setter Property="BorderBrush" Value="LightGray"/>
                    <Setter Property="Margin" Value="0,0,15,0"/>
                    <Setter Property="Background" Value="White"/>                    
                </Style>
            </ListBox.ItemContainerStyle>

1 个答案:

答案 0 :(得分:2)

您无法设置大多数容器的CornerRadius。但是,您可以设置CornerRadius的{​​{1}},然后将任何容器的Border设置为此OpacityMask

以下是您的操作方法:

Border

如果你真的想在没有资源的情况下做同样的事情:

<Grid>
    <Border x:Name="Container" Height="25" Background="White" CornerRadius="8"/>
    <ListBox>

        <ListBox.Resources>
            <Style TargetType="ListBoxItem">
                <Setter Property="Background" Value="LightGreen"/>
                <Setter Property="OpacityMask">
                    <Setter.Value>
                        <VisualBrush Visual="{Binding ElementName=Container}"/>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.Resources>

        <ListBoxItem x:Name="Item1" Height="25" Content="Item #1"/>

    </ListBox>
</Grid>

在这里,您可能希望将高度绑定到相同的值。

需要注意的一件重要事情是,如果您不提供<Grid> <Border x:Name="Container" Height="25" Background="White" CornerRadius="8"/> <ListBox> <ListBoxItem x:Name="Item1" Height="25" Content="Item #1" Background="LightGreen"> <ListBoxItem.OpacityMask> <VisualBrush Visual="{Binding ElementName=Container}"/> </ListBoxItem.OpacityMask> </ListBoxItem> </ListBox> </Grid> 背景颜色,那么它将是透明的,因此您设置不透明蒙版的项目将是不可见的。 Border&#39; s Border的颜色无关紧要。但请确保有一个项目覆盖该边框,在这种情况下为BackgroundColor