我在互联网上搜索了一段时间,在这里找到解决我问题的方法,但我不知道为什么我尝试的所有解决方案都不起作用。我首先要说的是,我在WPF中是全新的,所以这可能是真正的问题,但我解释了我想要实现的目标。
我正在构建一个WPF控件,我将在另一个应用程序中导入(这不是WPF应用程序,但我可以添加WPF控件),这个控件是一个简单的列表视图,具有以下功能: - 透明背景 - 带圆角的边框
我这样做是因为在我的其他应用程序中我有深色背景和阴影,我希望这个控件是透明的,所以你可以看到背景
在互联网上搜索我找到了我需要的东西,但我缺少的是更改所选项目背景 - 前景和当鼠标悬停在项目上时相同的事情(希望它清楚)
这是我用于测试的代码:
<Window x:Class="TestWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="501" Width="792">
<Window.Background>
<ImageBrush ImageSource="C:\\BkGd.png"></ImageBrush>
</Window.Background>
<Grid>
<ListView Margin="10" Name="lvUsers" Background="Transparent" Foreground="White" FontStyle="Normal" FontWeight="Normal" FontFamily="Segoe UI" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Resources>
<!-- Foreground for Selected ListViewItem -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="Black"/>
<!-- Background for Selected ListViewItem -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent"/>
</Style.Resources>
</Style>
</ListView.ItemContainerStyle>
<ListView.Template>
<ControlTemplate TargetType="{x:Type ListView}">
<Border CornerRadius="3" BorderThickness="1" BorderBrush="DarkGray">
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Border>
</ControlTemplate>
</ListView.Template>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
这适用于背景和圆角边框,但项目仍然以浅色和白色文字突出显示,这对我来说并不好。对于鼠标悬停和所选项目,我想拥有的是透明边框而不是突出显示的项目。
另一件事是,由于我添加了模板,标题不再显示,但我也想要标题。
任何人都可以帮我这样做吗? 非常感谢提前
编辑: 这是发生了什么的图像 Image。我希望有一个透明边框
编辑2: 背景是一个图像。我试着评论&#34; ListView.View&#34;部分,我有我想要的结果,如image所示,但不显示项目。我需要按代码添加项目
答案 0 :(得分:0)
<Window.Background>
<ImageBrush ImageSource="C:\\BkGd.png"></ImageBrush>
</Window.Background>
这实际上是在设置背景。
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent"/>
</Style.Resources>
将所选项目背景设置为透明。因此,你正在获得窗口的背景。但是,由于那个蓝色的亮点,你没有看到它。为此,您需要覆盖默认的控件样式。
以下是如何做到的。