我正在使用WPF Futures中的主题DarkExpression。 它似乎不适用于datatemplates。
情景1:
以下是没有datatemplates的情况:
代码:
<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>
场景2: 以下是在使用主题时尝试使用datatemplates的方式:
代码:
<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>
场景3:
以下是在覆盖主题时尝试使用datatemplates的方式:
代码:
<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>
我想保留主题样式,但我也想使用datatemplates来定义播放列表的外观。有什么建议吗?
注意:在方案2和3中,我必须删除
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/>
</GridViewColumn>
</GridView>
</ListView.View>
在使用datatemplate之前。
修改
下面给出的解决方案,如果类型更改为ListBox并且我使用的是TextBox,则可以使用。但是我无法使用ListView。
答案 0 :(得分:2)
你做错了。 如果要自定义ListView,则需要使用ViewBase类型的View属性。从ViewBase派生自定义视图,将其分配给ListView.View,您就完成了。 ViewBase Class Documentation
中有一个例子答案 1 :(得分:1)
尝试使用BasedOn
<Style BasedOn={StaticResource {x:Type ListViewItem}} x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Transparent" />
</Style>
答案 2 :(得分:0)
如果替换
,它是否有效<Grid>
<UserControls:SongDataTemplate Margin="4" />
</Grid>
使用TextBox,例如?
问题可能由您的用户控件生成..