■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で何かもう一個処理をすれば、ちゃんと画面表示されるんじゃないかなと思っているのですが、 どのようにしたらよいでしょうか。
宜しく御願い致します。
|
|