使用不同参数实现相同命令的最佳方法

时间:2014-04-30 09:29:00

标签: c# wpf commandbinding

Template的{​​{1}}我添加了ListViewItems

Button应触发某种删除Button。但每个Command都是唯一的,因此ListViewItem应该Button来识别点击的ParameterButton

现在我的问题是,实施该方法的最佳方法是什么?

我对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>

1 个答案:

答案 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。