私はデータバインディングが初めてなので、この質問はかなりばかげているように思えるかもしれません。私はhttp://wpftoolkit.codeplex.com/から入手した Xceed WPF Toolkit の DataGridControl を使用しています。これは、DataGrid コントロールの使用法に非常に似ていると思います。DataGridControl SelectedItem を Grid コンテンツにバインドするつもりです。関連するコントロールとオブジェクト変数は次のとおりです。
GridKaryawan --> DataGridControl
Grid --> without name, for displaying details
karyawans --> ObservableCollection<BiodataKaryawan> --> collection of business objects
selKaryawan --> (intended to be) the selected business object
* The business object "BiodataKaryawan" has already implemented INFC.
これまでのところ、私はやっています(関連する部分のみが示されています):
<xcdg:DataGridControl x:Name="GridKaryawan" ItemsSource="{Binding Path=karyawans}" ReadOnly="True"
SelectedItem="{Binding Path=selKaryawan, Mode=TwoWay}">
....
....
</xcdg:DataGridControl>
コードビハインド:
public ObservableCollection<BiodataKaryawan> karyawans { get; set; }
public BiodataKaryawan selKaryawan { get; set; }
そしてグリッドで:
<Grid DataContext="{Binding Path=selKaryawan, Mode=TwoWay}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
....
....
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
....
....
</Grid.RowDefinitions>
<Label Grid.Row="0">Nama:</Label>
<Label Grid.Row="1">Panggilan:</Label>
....
....
<TextBox Grid.Column="1" Grid.Row="1" x:Name="txtNama" Text="{Binding Nama}"/>
<TextBox Grid.Column="1" Grid.Row="2" x:Name="txtPanggilan" Text="{Binding Panggilan}" />
....
....
</Grid>
DataGridControl.SelectedItem を Grid に正常にバインドしました。しかし、フォームは新しい「BiodataKaryawan」の作成もサポートするため、コードビハインドで「selKaryawan」オブジェクトを使用してそれらをバインドしたいと思います。また、「新規作成」ボタンを使用して、新しい BiodataKaryawan オブジェクトを selKaryawan に割り当てる予定です。しかし、バインディングは失敗しました。データグリッドで行を選択すると、「GridKaryawan.SelectedItem」にバインドしたときのように詳細が表示されませんでした。どこで私は間違えましたか?またはそれはまったく可能ですか?
答えてくれてありがとう。