我Template
的{{1}}我添加了ListViewItems
。
Button
应触发某种删除Button
。但每个Command
都是唯一的,因此ListViewItem
应该Button
来识别点击的Parameter
或Button
。
现在我的问题是,实施该方法的最佳方法是什么?
我对ListViewItem
相当新,但我尽可能地遵循WPF
。我尝试查找自定义MVVM
等的一些教程,但不知怎的,我理解它并且我不想使用第三方工具,因为我Commands
上只有Buttons
Window
1}}做某事。
更新
感谢您对索引的想法。但是如果有人有一个教程的链接来解释如何设置一个简单的命令,我真的很感激。 我不是在谈论XML更多关于创建整个命令部分的C#。
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border BorderBrush="#5076A7" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFFFFF" Offset="0.0"/>
<GradientStop Color="#C0D3EA" Offset="1.0"/>
</LinearGradientBrush>
</Border.Background>
<StackPanel TextElement.FontFamily="Segoe UI" TextElement.FontSize="12">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Padding="3,0,0,0" Text="{Binding Betreff}" TextTrimming="CharacterEllipsis" Grid.Column="0" Grid.Row="0"/>
<Button FontSize="7" Content="X" Grid.Column="1" Grid.Row="0"/>
</Grid>
<TextBlock Padding="3,0,0,0" Text="{Binding Kunde}"/>
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="Bold" Padding="3,0,0,0" Text="{Binding Ort}"/>
<TextBlock Padding="3,0,0,0" Text="{Binding Alternative}"/>
</StackPanel>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:1)
想象一下,ItemsSource绑定到Item列表,其中Item具有名为Id
的属性<Window.Resources>
<vm:MyViewModel x:Key="ViewModel"/>
</Window.Resources>
<ListView ItemsSource={Binding Items}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command={Binding DoSomethingCommand, Source={StaticResource ViewModel}} CommandParameter={Binding Id}>Do something</Command>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
如果省略数据模板中绑定的来源,则源将是项目本身。然后,您可以使用item的任何属性作为命令的参数,在此示例中,将是Id。