为什么WPF ListView主题不起作用?
我不是平面设计师,但我想要一个好看的应用程序。我在互联网上搜索WPF主题,找到了这些主题:为什么WPF ListView主题不起作用?,wpf,xaml,listview,themes,Wpf,Xaml,Listview,Themes,我不是平面设计师,但我想要一个好看的应用程序。我在互联网上搜索WPF主题,找到了这些主题: 主题可以与按钮、文本框和许多控件配合使用,但不能与ListView配合使用。 这就是我的示例ListView在没有主题的情况下的外观: 这就是ShinyBlue主题的外观(其他主题看起来类似): 我使用哪个主题并不重要(我下载了很多)。始终存在一个问题,即带有主题的ListView不显示项目。它只是显示一些粗线条,而不是项目。 代码如下: <Window xmlns=
主题可以与按钮、文本框和许多控件配合使用,但不能与ListView配合使用。
这就是我的示例ListView在没有主题的情况下的外观:
这就是ShinyBlue主题的外观(其他主题看起来类似):
我使用哪个主题并不重要(我下载了很多)。始终存在一个问题,即带有主题的ListView不显示项目。它只是显示一些粗线条,而不是项目。
代码如下:
<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示例:当我创建一个带有列和
项资源的ListView时,它可以工作(但颜色混乱,可能是另一个问题):
我还让您的代码正常工作,但为此,我更改了BureauBlack.xaml
中的ListViewItem
模板(正在使用的主题):
到
现在将显示代码列表中的内容。但是对于你想做的事情,就像在评论中建议的那样,你可能想要一个列表框
,而不是列表视图
,嗨,我刚刚尝试了几个主题,看看你的意思是什么似乎不起作用。尝试设置ItemTemplate,但效果不佳。ListBox似乎与主题相关,但您尝试过吗?谢谢您的工作和回答。根据您的建议,我将GridViewRowPresenter更改为ContentPresenter,现在项目显示正确。我使用上面的示例用尽可能少的代码来演示这个问题。在现实生活中,我的ListView代码更复杂,但如果显示它,则更难理解问题。你有一个好的来源,我可以了解GridViewRowPresenter、ContentPresenter和可能的类似问题吗?对不起,我没有来源,我自己也不太了解。问题基本上是主题使用的GridViewRowPresenter
与GridView
一起工作,而您原来的ListView
没有使用GridView
。
<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>
ListView1.ItemsSource = new[]
{
new { A = "qqq", B = "rrr" },
new { A = "qqqq", B = "rrr" }
};
<GridViewRowPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />