2014-12-04 2 views
0

В моем WPF проекте я использую ItemsControl для отображения элементов и удаление/перемещение вверх/вниз их:не удается получить доступ к DataContext параметр в ObservableCollection в 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 TestL ist item.

removebutton.DataContext.ToString(); отлично работает, я получаю строку с ключом и значением.

Но мне нужен только ключ, и это не работает: removebutton.DataContext.Key; (Ошибка: не удается разрешить символ «Ключ»).

Если я отладки, я могу получить доступ к ключу:

enter image description here

+2

Вы пытались лить DataContext в KeyValuePair? – Jawahar

ответ

1

Вы должны бросить removebutton.DataContext к KeyValuePair<int, string>, так как тип DataContext является object

Это будет работать:

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

о, дорогая! спасибо и любителю XAML – Stampy