我在我的应用程序中使用了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>
答案 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
。