0

私はデータバインディングが初めてなので、この質問はかなりばかげているように思えるかもしれません。私は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」にバインドしたときのように詳細が表示されませんでした。どこで私は間違えましたか?またはそれはまったく可能ですか?

答えてくれてありがとう。

4

1 に答える 1

0

コードビハインドに INotifyPropertyChanged を実装し、selKaryawan プロパティのセッターで PropertyChanged イベントを発生させる必要があると思います

于 2013-02-21T12:38:10.147 に答える