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

C# 如何在WPF中设置容器的角半径,c#,wpf,xaml,C#,Wpf,Xaml,我在应用程序中使用了Listbox。我想在不使用资源的情况下为listbox项设置角半径。我已经使用itemsContainer设置了borderthickness、边框笔刷和背景,但是没有拐角半径属性。通过使用资源,可以访问唯一的cornerradius属性 我如何在不使用资源的情况下实现这一点 我是.Net开发的新手,所以请给出解决此问题的任何建议 <ListBox.ItemContainerStyle> <S

我在应用程序中使用了Listbox。我想在不使用资源的情况下为
listbox
项设置角半径。我已经使用
itemsContainer
设置了
borderthickness
、边框笔刷和背景,但是没有拐角半径属性。通过使用资源,可以访问唯一的
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>

您无法设置大多数容器的
转弯半径。但是,您可以设置
边框的
拐角半径
,然后将任何容器的
不透明掩码
设置为此
边框

以下是您的操作方法:

<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>

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


需要注意的一件重要事情是,如果您不提供
边框
背景色,它将是透明的,因此您设置的不透明度遮罩项将不可见。
边框
背景色
的颜色不相关。但是,请确保有一个项目覆盖了该边框,在本例中它是
列表框

您不能设置大多数容器的
拐角半径
。但是,您可以设置
边框的
拐角半径
,然后将任何容器的
不透明掩码
设置为此
边框

以下是您的操作方法:

<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>

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

需要注意的一件重要事情是,如果您不提供
边框
背景色,它将是透明的,因此您设置的不透明度遮罩项将不可见。
边框
背景色
的颜色不相关。但请确保有一个项目覆盖了该边框,在本例中它是
ListBox