1

WPF 4.0 とデータグリッドを使用して、c# で小さなアプリを作成しました。私のデータグリッドはオブジェクトにバインドされています。

行が入力された後にテストを行いたいので、RowEditEnding イベントを使用します。

これが私のコードです

private void dataGrid1_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    TableCompte Compte = e.Row.DataContext as TableCompte;

    if (Compte  != null)
    {
       // Verifs
    }
}

私の問題は、オブジェクトが null であることです。

私のエラーはどこですか?

これが私のXAML宣言です:

<DataGrid AutoGenerateColumns="false" Name="dataGrid1" AreRowDetailsFrozen="false" Margin="31,227,28,82" RowEditEnding="dataGrid1_RowEditEnding">
    <DataGrid.Columns>
        <DataGridTextColumn Width="134" Header="Compte d'origine" Binding="{Binding Path=m_CompteOrigine, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        <DataGridTextColumn Width="134" Header="Compte Taux 1" Binding="{Binding Path=m_CompteTaux1, Mode=TwoWay ,UpdateSourceTrigger=PropertyChanged}"  />
        <DataGridTextColumn Width="134" Header="Taux 1" Binding="{Binding Path=m_Taux1, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged }"  />
        <DataGridTextColumn Width="134" Header="Compte Taux 2" Binding="{Binding Path=m_CompteTaux2, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
        <DataGridTextColumn Width="134" Header="Taux 2" Binding="{Binding Path=m_Taux2, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged }"  />
        <DataGridTextColumn Width="134" Header="Compte Taux 3" Binding="{Binding Path=m_CompteTaux3, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
        <DataGridTextColumn Width="134" Header="Taux 3" Binding="{Binding Path=m_Taux3, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged }"  />
    </DataGrid.Columns>
</DataGrid>
4

1 に答える 1

0

ここでの問題はDataContext、アイテムがから生成された場合にのみ設定されることです( にバインディングItemsSourceがあるはずです)。 使用する代わりに、これで問題が解決します。ItemsSourceDataGrid
e.Row.DataContexte.Row.Item


更新

問題はキャスト部分にあるようです。

TableCompte Compte = e.Row.DataContext as TableCompte;

にバインドしている型に注意する必要がありますDataGrid。バインドObservableCollection<YourClass> FooObservableしてItemsSourceいる場合YourClassは、m_CompteTaux1、m_CompteTaux2、m_CompteTaux3、m_CompteTaux4 などが必要です。キャスト:

var rowDataItem = e.Row.DataContext as YourClass;
于 2012-09-02T20:43:32.607 に答える