【发布时间】:2016-11-12 21:47:41
【问题描述】:
我有以下代码
<ItemsControl x:Name="ItemsControl" ItemsSource="{Binding Offers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<wpf:Card Padding="32" Margin="5" d:DataContext="{d:DesignData }">
<StackPanel Margin="0,0,0,-30" Height="107">
<TextBlock
Style="{DynamicResource MaterialDesignTitleTextBlock}">
<Run Text="Offer " />
</TextBlock>
<TextBlock Text="{Binding CarDescription}" />
<Separator Height="1" Visibility="Hidden" />
<Button Content="Select"
Width="72"
VerticalAlignment="Bottom"
HorizontalAlignment="Right"
Margin="0,20,0,0"
Command="{Binding SelectOfferCommand}"/>
</StackPanel>
</wpf:Card>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这会产生一堆重复的框,每个框都有一个按钮。每次单击按钮时,我都想访问当前框索引(来自 ItemsControl 的 ItemsSource)并将其作为命令参数传递。有可能吗?
【问题讨论】:
-
为什么?您可以传递 itemTemplate 绑定到的实际项目。
-
不要将视觉对象命名为它的类型。您应该将 ItemsControl 的名称更改为另一个名称,例如:“ItemsControlOffers”。
-
@UçanKartal 出于什么原因? “ItemsControl”在这里是一个完全有效的名称。
-
@Clemens 因为当你有很多窗口时,它会帮助你区分实体。
-
@UçanKartal 这没有意义。这里肯定只有一个窗口。
标签: c# wpf data-binding itemscontrol stackpanel