gpt4 book ai didi

c# - 使用主题时的数据模板不起作用 - WPF

转载 作者:行者123 更新时间:2023-12-04 06:55:40 28 4
gpt4 key购买 nike

我正在使用来自 WPF Futures 的主题 DarkExpression .
它似乎不适用于数据模板。

场景一:

这是没有数据模板的样子:

enter image description here

代码:

<ListView Name="playlistListView"  ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98">
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

场景二:
这是在使用主题时尝试使用数据模板的样子:

enter image description here

代码:
        <ListView Name="playlistListView"  ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<UserControls:SongDataTemplate Margin="4" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

场景三:

这是在覆盖主题时尝试使用数据模板的样子:

enter image description here

代码:
<UserControl.Resources>
<Style x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Transparent" />
</Style>
</UserControl.Resources>

<Grid x:Name="LayoutRoot">
<ListView Name="playlistListView" ItemContainerStyle="{StaticResource ListViewItemStretch}" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<UserControls:SongDataTemplate Margin="4" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

我想保留主题风格,但我也想使用数据模板来定义播放列表的外观。有什么建议?

注:在场景 2 和 3 中,我不得不删除
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/>
</GridViewColumn>
</GridView>
</ListView.View>

在使用数据模板之前。

编辑:

如果类型更改为 ListBox 并且我使用的是 TextBox,则下面给出的解决方案有效。但是我不能让它与 ListView 一起工作。

最佳答案

你做错了。
当您想要自定义 ListView 时,您需要使用 ViewBase 类型的 View 属性。从 ViewBase 派生一个自定义 View ,将其分配给 ListView.View 就完成了。
ViewBase Class Documentation 中有一个例子

关于c# - 使用主题时的数据模板不起作用 - WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593042/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com