我正在尝试制作一个半透明背景的WPF ListView(它有一个颜色填充和0.5不透明度),但我希望它的项目不是半透明的(有1个不透明度)。问题是每当我将ListViewItems的不透明度设置为高于ListView时,它就不起作用。例如,当我将其设置为1时,它仍然保持在0.5,因为这是它的母对象的不透明度。是否有一些解决方法让它像我想的那样工作?
答案 0 :(得分:2)
不要搞乱ListView对象的Opacity
属性。将它的背景颜色设置为#80'您的RGB值在这里'。基本上,使用所需颜色的RGB值,并将A(alpha)值设置为半透明,即十六进制为80。
这将对ListView项目的不透明度产生影响。
当你想要一切半透明时,不透明度很有用。如果您需要更细粒度的控制(在您的情况下执行),那么通过在个别项目中使用Alpha通道可以更好地满足您的需求。颜色/填充/背景属性。在WPF中,颜色的十六进制表示为:#ARGB,其中每个字母都是一个两位十六进制值,表示十进制中0到255之间的值。 A是Alpha通道,R是红色通道,G是绿色通道,B是蓝色通道。
例如#FF808080
是完全不透明的中灰色,#01FFFFFF
是几乎完全透明的白色。当你希望某些东西看起来透明(或至少暴露它背后的颜色)时,第二个特别有用,但你仍然希望能够点击它。 100%透明的项目无法点击。
答案 1 :(得分:0)
您应该可以通过定义自定义ControlTemplate
来完成此操作,您可以在其中设置Opacity
元素的Border
属性,并将ItemsPresenter
放在此<ListView Height="100" Background="Yellow">
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListView}">
<Grid>
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}" Padding="1"
SnapsToDevicePixels="true"
Opacity="0.5">
</Border>
<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}" Margin="{TemplateBinding BorderThickness}">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</ScrollViewer>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="Bd" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FFD9D9D9"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsGrouping" Value="true"/>
<Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.Style>
<ListViewItem Background="Yellow">1</ListViewItem>
<ListViewItem Background="Yellow">2</ListViewItem>
<ListViewItem Background="Yellow">3</ListViewItem>
</ListView>
之上。以下是您的示例:
var = MyVar("newValue")