2016-11-10 7 views
0
にバインドTextBoxの

は.csのDataAdapter

<DataGrid x:Name="dgMain" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" AutoGenerateColumns="False"/> 
<TextBox x:Name="textBox" Height="23" TextWrapping="Wrap" Text="{Binding name}" Width="120"/> 

の.xaml

DataTable dt; 
    NpgsqlDataAdapter adapter; 
    NpgsqlCommand selcmd, upcmd, delcmd, inscmd; 
    NpgsqlConnection conn; 
    NpgsqlTransaction tran; 

    public void ReadAndFill() 
    { 
     conn.Open(); 
     tran = conn.BeginTransaction(); 

     selcmd.Connection = conn; 
     selcmd.Transaction = tran; 

     dt.Clear(); 
     adapter.Fill(dt); 
     dgMain.ItemsSource = dt.DefaultView; 
     tran.Commit(); 
     conn.Close(); 
    } 
    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     ReadAndFill(); 
     DataContext = dt;  
    } 

だから私は、テキストボックス(TextBox)コントロールを通じてのDataTable dtはの最初の行だけを編集することができます。また、DataGrid dgMainを動かすと、textBoxのデータは変更されません。それを修正するには?

+0

なぜ、DataAdapterを最初に使用していますか? NpgsqlはEFをサポートしています - 通常のMvvM/EFコンボデータフローに従わないのはなぜですか?また、最終的に 'name'プロパティを提供しているDataContextに何かがあることは間違いありませんが、ビューモデルは表示されません。 – Maverik

+0

私はwpfでそれを試してみませんでしたが、winformsではバインドされた値の名前と表示名が何であるかをオブジェクトに伝える必要があります。 – Liran

+0

WpfはWinformではありません:)全体に物事を移植しようとすると、悲惨さしかありません。実際にこれを正しい方法で行う方法を学ぶには、ちょっとした時間を費やしてください。これはあなたが扱っている簡単なことです。詳細については、WPFのチャットルームに参加してください:http://chat.stackoverflow.com/rooms/18165/wpf# – Maverik

答えて

0

この場合、TextBoxをDataGridに関連付ける必要があります。 TextBoxがDataTable/DataSet/DataAdapterにバインドする方法と、同じロジックを維持する方法の例は見つかりませんでした:TextBoxのデータはDataGrid上を移動することによって変更されます。

関連する問題