为什么 WPF ListView 主题不起作用?

Why does no WPF ListView Theme work?

我不是平面设计师,但我想要一个漂亮的应用程序。我在 Internet 上搜索 WPF 主题,发现这些:
https://visualstudiogallery.msdn.microsoft.com/30e8b37d-01a0-4749-abcb-a5d7631e7646
这些主题适用于按钮和文本框以及许多控件,但不适用于 ListView。
这是我的示例 ListView 在没有主题的情况下的样子:

这就是主题 ShinyBlue 的外观(其他主题看起来相似):

我使用哪个主题并不重要(我下载了很多)。一直存在带主题的ListView不显示items的问题。它只显示一些粗线而不是项目。
这是代码:

 <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
            mc:Ignorable="d" x:Class="SahaWpfTheme20131.TestWindow1"
            Title="Test Window" Width="250" Height="200"
            >
            <Grid>
                 <ListView  x:Name="ListView1" HorizontalAlignment="Left"  
                        VerticalAlignment="Top" Width="200" Height="150">
                    <ListViewItem Content="Coffee"/>
                    <ListViewItem Content="Tea"/>
                    <ListViewItem Content="Orange Juice"/>
                    <ListViewItem Content="Milk"/>
                    <ListViewItem Content="Iced Tea"/>
                    <ListViewItem Content="Mango Shake"/>
                </ListView>
            </Grid>
        </Window>

是我做错了什么,还是很多主题不适用于 ListView?我很困惑为什么这不起作用。

我使用了此处的 ListView 示例:http://www.c-sharpcorner.com/uploadfile/mahesh/listview-in-wpf/

当我创建一个带有列的 ListView 和一个 ItemsSource 时,它起作用了(但是颜色乱七八糟,可能是另一个问题):

    <ListView  x:Name="ListView1" HorizontalAlignment="Left"  
                    VerticalAlignment="Top" Width="200" Height="150">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn DisplayMemberBinding="{Binding A}" />
                    <GridViewColumn DisplayMemberBinding="{Binding B}" />
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

并在code-behind中(当然这不是正确的做法,但这是最短的):

        ListView1.ItemsSource = new[]
        {
            new { A = "qqq", B = "rrr" },
            new { A = "qqqq", B = "rrr" }
        };

我也让你的代码可以工作,但为此我更改了 BureauBlack.xaml 中的 ListViewItem 模板(正在使用的主题):

<GridViewRowPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />

<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />

现在您的代码列表中的内容已显示。但是对于你想要做的事情,就像评论中建议的那样,你可能想要一个 ListBox,而不是 ListView