在我的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;)。
如果我调试,我可以访问密钥:
答案 0 :(得分:1)
您需要将removebutton.DataContext
转换为KeyValuePair<int, string>
,因为DataContext的类型为object
这将有效:
var test = ((System.Collections.Generic.KeyValuePair<int, string>)removebutton.DataContext).Key