我在代码中有以下ListView。
我找到的所有信息似乎都表明,在模板中只需要放置一个
views:GameCard
是自定义的UserControl
,而{Binding}
是一个有效的DataContext
对象,并且其中包含三个项。没有自定义的ItemContainerStyle
时,一切都完美地工作——列表显示了三个具有正确信息的GameCards
等。但是当我添加ItemContainerStyle
部分时,我只得到了三个“ABCD”,因此数据仍然被正确加载,但我的UserControl
不再显示(我只添加了“ABCD”以检查数据是否存在,否则我得到的只是空框)。我找到的所有信息似乎都表明,在模板中只需要放置一个
ContentPresenter
元素即可运行,但在这种情况下似乎并不起作用。我错过了什么吗?<ListView Grid.Row="1" ItemsSource="{Binding}" BorderThickness="0,0,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF614B4B" Offset="0"/>
<GradientStop Color="#FFDA7070" Offset="1"/>
</LinearGradientBrush>
</ListView.Background>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<views:GameCard />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<TextBlock Text="ABCD" />
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<ContentPresenter Content="{Binding}"...
- Sten Petrov