我有这个列表框:
<ListBox x:Name="MyList" ItemsSource="{Binding ListOfBullets, Mode=TwoWay, Converter=StaticResourcedebugConverter}}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:TaskStepControl Text="{Binding}" AddHnadler="{Binding DelegateForHandlingAddTaskStep, ElementName=uc}"></local:TaskStepControl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
绑定工作正常。每个 local:TaskStepControl 都有一个 Add 按钮,它连接到 AddHnadler。AddHnadler 看起来像这样:
void AddHnadler(TaskStepControl theControl)
{
// "theControl" --> this TaskStepControl on which the Add button was pressed
//In here I want to get the index of "theControl" in the ListBox "MyList".
//I've tried
var pos = MyList.Items.IndexOf(theControl);
//pos == -1 always
}
我不能使用 SelectionChanged 事件,因为每个 TaskStepControl 上的添加按钮不会将 Click 事件传递给 ListBox。
我通常在不在 xaml 中的代码中工作,所以这可能非常简单,但我无法让它工作。我需要像 "IndexOf" 这样简单的东西,没有 MVVM 的东西,正如我所说的,我通常在后面的代码中工作,而不是在 xaml 中,只是这次我必须实现它。
谢谢!