C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: WPF Datagrid での編集


(過去ログ 69 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■40420 / inTopicNo.1)  WPF Datagrid での編集
  
□投稿者/ rmatsu (11回)-(2009/08/25(Tue) 15:35:45)

分類:[VB.NET/VB2005 以降] 

お世話になります。

WPF ToolkitのDataGrid について質問させてください。(VS2008、VB.Net)

やりたいことは、GridのCol1にてテキスト入力した値をキーとして、Col2に名称を表示するといったものです。

以下は現在までに試したサンプルです。

【xxx.xaml】
<Window x:Class="xxx"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
>
<tk:DataGrid x:Name="dataGrid"
CanUserAddRows="True" CanUserDeleteRows="False"
AutoGenerateColumns="False">
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="Col1"
Binding="{Binding Col1}"
/>
<tk:DataGridTextColumn Header="Col2"
Binding="{Binding Col2}"
/>
</tk:DataGrid.Columns>
</tk:DataGrid>

【xxx.xaml.vb】
Public Class sample
Private _Col1 As String
Private _Col2 As String

Public Property Col1() As String
Get
Return _Col1
End Get
Set(ByVal value As String)
_Col1 = value
End Set
End Property
Property Col2() As String
Get
Return _Col2
End Get
Set(ByVal value As String)
_Col2 = value
End Set
End Property
End Class

<試行例1> 対象セルに対し値をセット
----------------------------------------------
Private Sub dataGrid_CellEditEnding(ByVal sender As System.Object, ByVal e As Microsoft.Windows.Controls.DataGridCellEditEndingEventArgs)
'セットする行はとりあえず固定としている
dataGrid.ItemsSource(1).Col2 = "(セットしたい値)"
End Sub
----------------------------------------------

<試行例2> 一度新しいリストに一行ずつDataGridの行をセットし、対象セルにセットしたい値をセット。
----------------------------------------------
Private Sub dataGrid_CellEditEnding(ByVal sender As System.Object, ByVal e As Microsoft.Windows.Controls.DataGridCellEditEndingEventArgs)
Dim list As IList = New ArrayList
For Each smp As sample In dataGrid.ItemsSource
If e.Row.Item.Col1 = smp.Col1 Then
smp.Col2 = "(セットしたい値)"
End If
list.Add(smp)
Next
dataGrid.ItemsSource = list
End Sub
----------------------------------------------

試行例1では、DataGridの値が変更されることは確認したのですが、画面上変化がありませんでした。
変更されているはずのセルをダブルクリックし、編集状態にすると、値が変更されました。

試行例2では、入力完了後、画面上表示したい通りに表示はされるのですが、Enterキーを押して入力完了した場合に、
エラー(オブジェクト参照がオブジェクトにセットされていません。)となりました。
エラー発生箇所の特定はできませんでした。

試行例1で何かもう一個処理をすれば、ちゃんと画面表示されるんじゃないかなと思っているのですが、
どのようにしたらよいでしょうか。

宜しく御願い致します。

引用返信 編集キー/
■40431 / inTopicNo.2)  Re[1]: WPF Datagrid での編集
□投稿者/ Hongliang (457回)-(2009/08/25(Tue) 21:57:15)
sample クラスに INotifyPropertyChanged インターフェイスを実装し、各プロパティの変更時に PropertyChanged イベントを起こせば、変更をバインドしているコントロールに通知できます。
引用返信 編集キー/
■40459 / inTopicNo.3)  Re[2]: WPF Datagrid での編集
□投稿者/ rmatsu (12回)-(2009/08/26(Wed) 14:03:29)
Hongliangさん、ご回答ありがとうございます。

まだ解決には至っていませんので、もう少し追って見ます。

とりあえずお礼まで。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -