为什么ItemContainerStyle
(下面详述)的实现会导致单个数据列绑定在其他工作ListView
/上失败GridView
?
这是失败的视觉结果,其中显示了 3 行中的总项目,但不显示单个列项目:
没有覆盖的实现ItemContainerStyle
:
实际目标在回答问题之前,请考虑一下我的最终目标是替代解决方法。我想要一个GridView
类似的结构,其中每一行都有一个阴影;最好显示在所选项目上/悬停操作上以使行弹出。正如上面的失败示例所示
代码
<ListView ItemsSource="{StaticResource People}">
<!--Comment this out to see working display-->
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid Background="White" Margin="20">
<Grid.Effect>
<DropShadowEffect />
</Grid.Effect>
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<!--End Failure Point-->
<ListView.View>
<GridView >
<GridViewColumn Header="First" DisplayMemberBinding="{Binding Path=First}" />
<GridViewColumn Header="Last" DisplayMemberBinding="{Binding Path=Last}" />
<GridViewColumn Header="Phone" DisplayMemberBinding="{Binding Path=Phone}" />
</GridView>
</ListView.View>
</ListView>
要重现,您将需要
Xaml 中定义的静态资源数据
xmlns:model="clr-namespace:{your namespace}.Model"
<UserControl.Resources>
<model:People x:Key="People">
<model:Person First="Joe" Last="Smith" Phone="303-555-5555"/>
<model:Person First="Jenny" Last="Johnson" Phone="720-867-5309" />
<model:Person First="Frank" Last="Wright" Phone="202-555-5555" />
</model:People>
</UserControl.Resources>
模型命名空间中的People.cs
public class People : List<Person> { }
public class Person
{
public string First { get; set; }
public string Last { get; set; }
public string Phone { get; set; }
}