我正在与列表视图作斗争。
我有这个列表视图:
<ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" x:Name="listViewCombined" ItemTemplate="{StaticResource ItemTemplate}" Margin="5">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
这是模板:
<Window.Resources>
<DataTemplate x:Key="ItemTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Dispo}" Grid.Column="0" Margin="5" MouseLeftButtonDown="DispoItem_Click"/>
<TextBlock Text="{Binding MATNR}" Grid.Column="1" Margin="5" MouseLeftButtonDown="MATNRItem_Click"/>
<TextBlock Text="{Binding MAKTG}" Grid.Column="2" Margin="5" MouseLeftButtonDown="MAKTGItem_Click"/>
</Grid>
</DataTemplate>
</Window.Resources>
上面代码的结果:
但是我试图将其放在一行中(就像一组),并将每个新组放在行中 每列都需要有单独的点击操作。 首先,我开始使用 3 个列表视图,但每个视图都有自己的垂直滚动条,并且一行中的项目属于在一起。所以我需要一个包含三列的滚动视图,每列都有自己的点击操作
首先,您应该看看 WPF 中的 MVVM 模式,并使用 ViewModel、命令和绑定:) 但这完全是另一个主题。
要处理手头的问题,定义点击处理程序很容易。在 XAML 中,只需执行您所做的操作,处理程序后面的代码如下所示:
private void DispoItem_Click(object sender, MouseButtonEventArgs e)
{
}
您可以通过
TextBlock
参数轻松访问 sender
。