【发布时间】:2009-09-17 17:44:56
【问题描述】:
我在 WPF 中有一个绑定的 ListBox,其中每个项目都有一个向上/向下按钮,用于在列表框中向上或向下移动项目。
但是我需要知道哪个按钮触发了事件,所以我想将按钮的名称设置为“UpButton”+ listBoxItem.Text 类型的东西。
这是 XAML 的简化版本
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=Position}"/>
<Label Grid.Column="1" Content="{Binding Path=Name}" FontSize="18" Margin="0,10,0,0" />
<WrapPanel Grid.Column="2" >
<Button Click="MoveUpClick" Name="UpButton">Up</Button>
<Button Click="MoveDownClick" Name="DownButton">Down</Button>
</WrapPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果有人知道提供类似排序功能和/或使用 DragDrop 对其进行排序的控件,我将不胜感激任何帮助,因为我已经逾期 2 个小时才能去度假。
【问题讨论】:
-
马克,为什么你需要知道按钮的名称?这似乎不是“真正的 WPF 方式”...
-
(别误会我的意思,我只是想帮忙,只是在 WPF 中可能有更好的方法来解决这个问题,而不需要文本)
-
每个 ListBoxItem 有两个按钮,所以当我收到 ClickEvent 时,我需要知道哪个 ListBoxItem 与我单击的按钮“关联”。我几乎可以肯定,有一种更优雅的方法可以做到这一点,只是我的时间很短。如果有人能解释这样做的正确方法,我会很高兴。