Datagrid-Zelle Click-Ereignis

<UserControl x:Class="DDCUI.CommDiagnosisWPFCtrl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Height="800" Width="300">
    <StackPanel>
        <DataGrid MinHeight="300" MaxHeight="600" AutoGenerateColumns="False" Name="DGComm" CanUserResizeColumns="True" IsReadOnly="True" ItemsSource="{Binding Source=dataGridRows}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="No." Binding="{Binding Number}" Width="0.1*"/>
                <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="0.1*" />
                <DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="0.15*" />
                <DataGridTextColumn Header="Source" Binding="{Binding Source}" Width="0.15*" />
                <DataGridTextColumn Header="Destination" Binding="{Binding Destination}" Width="0.15*" />
                <DataGridTextColumn Header="Data" Binding="{Binding Data}" Width="0.5*" />
            </DataGrid.Columns>
        </DataGrid>
        <RichTextBox Height="150" Name="RtbHexCode"/>
        <TreeView  Height="200" Name="TreeViewDecode"/>

    </StackPanel>
</UserControl>
private void DGComm_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
{
    //e.AddedCells[0].Column
    IList<DataGridCellInfo> cells = e.AddedCells;
    foreach (DataGridCellInfo di in cells)
    {
        DataRowView dvr = (DataRowView)di.Item;
        MessageBox.Show(di.ToString());
    }
}

Ich möchte in der Lage sein, um die Bearbeitung der ausgewählten Zelle. Ich versuche zu drucken, wird der name der Zelle geklickt aber es wirft eine invalid cast exception auf DataRowView dvr = (DataRowView)di.Element; die besagt, dass ich nicht in eine DataSource in RowView.

Wie kann ich dieses Problem lösen?

Edit: Itemsources wird durch

public ObservableCollection<object> dataGridRows = new ObservableCollection<object>();

private void InitProtocolParsers()
        {
            DGComm.ItemsSource = dataGridRows;
  • Wie sind Sie auf die Bereitstellung von Itemsource an die datagrid?
InformationsquelleAutor l46kok | 2012-07-24
Schreibe einen Kommentar