无法将DataGrid选定项转换为对象类型

时间:2011-10-08 15:57:34

标签: wpf datagrid casting selecteditem

我希望有人能够帮助我。我从昨天起就一直在这里,无处可去。

我有一个数据网格,其中包含一个共享列表,共享是一种类型 每个共享包含一个包含最近30天共享历史记录的列表。 我想在图表中显示所选项目历史记录。

我不知道是否可以直接将图形绑定到数据网格,但不认为这对我有用,因为我的下一步是允许多个选择并将它们全部绘制在一个图形上。

我作为测试尝试的最新内容是:

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

给出错误 {“无法将'Share'类型的对象转换为'ProjectMain.Share'类型。”} ProjectMain是我的命名空间

我也试过

Share test = ShareGrid.SelectedItem为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}"/>

为Share网格设置的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 :(得分:0)

假设选择了一个项目,这应该有效。

    Share test = ShareGrid.SelectedItem as Share;

您测试是使用

选择的项目
    ShareGrid.SelectedIndex >= 0 

如果未选择任何项目,则SelectedIndex将为-1