WPF DataGridの値を取得したい

イラスト C#

WPF DataGridのセルをクリックして値を取得する

成功パターン

XAML

DataGrid x:Name="Dg_tm_message" HorizontalAlignment="Left" Height="593" Margin="26,10,0,0" VerticalAlignment="Top" Width="1238" SelectionMode="Single" IsReadOnly="True" SelectedCellsChanged="Dg_tm_message_SelectedCellsChanged_2">

C#

イベントはSelectedCellsChangedを利用

        private void Dg_tm_message_SelectedCellsChanged_2(object sender, SelectedCellsChangedEventArgs e)
        {
            int i = Dg_tm_message.SelectedIndex;

            DataGridRow dgr = Dg_tm_message.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
            string UserID = ((TextBlock)Dg_tm_message.Columns[0].GetCellContent(dgr)).Text;
            MessageBox.Show(UserID);
        }

解説

データグリッド Dg_tm_message

SelectedIndex にて、RowIndex(何行目か?)が返る

これをItemContainerGenerator.ContainerFromIndex(i)を利用して DataGridRowを作成

その中で、(TextBlock)Dg_tm_message.Columns[0].GetCellContent(dgr)).Textを利用して、列0に入っている、テキストを取得する 

なぜかnullが返る

失敗パターン

 <DataGrid x:Name="Dg_tm_message" HorizontalAlignment="Left" Height="593" Margin="26,10,0,0" VerticalAlignment="Top" Width="1238" SelectionMode="Single" IsReadOnly="True" SelectedCellsChanged="Dg_tm_message_SelectedCellsChanged_2" SelectionUnit="Cell">

SelectionUnit=”Cell”

していると、Dg_tm_message.SelectedIndex は -1になる

コメント

タイトルとURLをコピーしました