Mod*_*ndi 6 wpf xaml templates contentpresenter listviewitem
我的代码中有以下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>
Run Code Online (Sandbox Code Playgroud)
Cle*_*ens 10
您需要设置ControlTemplate 的TargetType.为了使你的ItemTemplate工作,你还需要绑定Content和ContentTemplate属性.
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid>
....
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
... />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15524 次 |
| 最近记录: |