无法在ItemsControl中访问ObservableCollection的DataContext参数

时间:2014-12-04 08:42:27

标签: c# .net wpf observablecollection itemscontrol

在我的WPF项目中,我使用ItemsControl来显示项目并删除/上移/下移:

<ItemsControl ItemsSource="{Binding TestList, Mode=OneWay}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                ...
                <TextBox IsReadOnly="True" Text="{Binding Path=Value , Mode=OneWay}" />
                <Button Content"Remove" Click="RemoveClick" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

private ObservableCollection<KeyValuePair<int, string>> TestList;

private void RemoveClick(object sender, RoutedEventArgs e)
{
    var removebutton = sender as Button;

    if (removebutton != null) 
    {
         var test = removebutton.DataContext.ToString();   // That works

         // var test removebutton.DataContext.Key;
     }
}

我想获取所选ObservableCollection TestList项的索引(Key)。

removebutton.DataContext.ToString();工作正常,我得到一个带键和值的字符串。

但我只需要密钥而且不起作用:removebutton.DataContext.Key;(错误:无法解析符号&#39;密钥&#39;)。

如果我调试,我可以访问密钥:

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要将removebutton.DataContext转换为KeyValuePair<int, string>,因为DataContext的类型为object

这将有效:

var test = ((System.Collections.Generic.KeyValuePair<int, string>)removebutton.DataContext).Key