Не удается преобразовать выбранный элемент DataGrid в тип объекта - PullRequest
0 голосов
/ 08 октября 2011

Надеюсь, кто-нибудь сможет мне помочь с этим.Я был в этом со вчерашнего дня и ни к чему не привел.

У меня есть Сетка данных, содержащая список акций, тип акции -
Каждая акция содержит список, содержащий историю акций за последние 30 дней.Я хочу отобразить историю выбранных элементов на графике.

Я не знаю, возможно ли связать график непосредственно с сеткой данных, но не думаю, что это сработает для меня, так как мой следующий шаг -разрешить множественный выбор и построить их все на одном графике.

Самое последнее, что я попробовал в качестве теста, было:

String test = ((Share) ShareGrid.Items [ShareGrid.SelectedIndex]).Ticker;

Выдает ошибку {"Невозможно привести объект типа 'Share' к типу 'ProjectMain.Share'."} ProjectMain является моим пространством имен

Я также пытался

Поделиться тестом = ShareGrid.SelectedItem as Share;

Тест остается пустым.

Я пробовал несколько вещей по этим темам, но, очевидно, что-то упустил, поэтому любая помощь будет принята с благодарностью.

Спасибо.

Джо

Подробнее: Я связываю окно списка портфеля следующим образом:

        PortfolioListBox.ItemsSource = MainWindow.LoggedOnUser.Portfolio;
        PortfolioListBox.SelectedIndex = 0;

Я связываю сетку акций на основе поля списка портфеля следующим образом:

    private void PortfolioListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        listPortfolio = (PortfolioListBox.SelectedItem as Portfolio);
        ShareGrid.ItemsSource = listPortfolio.Share;
        ShareGrid.SelectedIndex = 0;
    }

XML для поля списка портфеля:

                        <ListBox Name ="PortfolioListBox" 
                                 DisplayMemberPath="name" 
                                 SelectionChanged="PortfolioListBox_SelectionChanged"
                                 DataContext="{Binding Path=SelectedItem}"/>

XML, настроенный для сетки общего доступа, выглядит следующим образом:

<DataGrid   AutoGenerateColumns="False" Height="Auto" HorizontalAlignment="Left" 
    Name="ShareGrid" VerticalAlignment="Top" SelectionMode="Extended" 
    SelectionUnit="FullRow" SelectionChanged="ShareGrid_SelectionChanged"
        CanUserResizeRows="False" CanUserResizeColumns="False" FrozenColumnCount="1" 
        FontSize="16" IsReadOnly="True" DataContext="{Binding Path=SelectedItem}">

1 Ответ

0 голосов
/ 08 октября 2011

Это должно работать, если выбран элемент.

    Share test = ShareGrid.SelectedItem as Share;

Вы проверяете, выбран ли пункт с помощью

    ShareGrid.SelectedIndex >= 0 

Если элемент не выбран, SelectedIndex будет -1

...