2011-08-01 9 views
0

すべてを繰り返しますMessageBox.Show(this.myProduct.Radif.ToString()); !!!!DataGridのCheckBoxに関する質問

何が起こっているか

XAMLコード:

<dg:DataGrid.Columns> 
      <dg:DataGridTextColumn Binding="{Binding IdBook}" Header="IdBook" ></dg:DataGridTextColumn> 
      <dg:DataGridTextColumn Binding="{Binding NameBook}" Header="NameBook"></dg:DataGridTextColumn> 
      <dg:DataGridTextColumn Binding="{Binding Author}" Header="Author"></dg:DataGridTextColumn> 
      <dg:DataGridTextColumn Binding="{Binding Price}" Header="Price"></dg:DataGridTextColumn> 
      <dg:DataGridTextColumn Binding="{Binding DateRegister}" Header="DateRegister"></dg:DataGridTextColumn> 
      <dg:DataGridTextColumn Binding="{Binding Description}" Header=Description" Width="*"></dg:DataGridTextColumn> 
      <dg:DataGridTemplateColumn> 
       <dg:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" Checked="Checked" Unchecked="UnChecked" /> 
        </DataTemplate> 
       </dg:DataGridTemplateColumn.CellTemplate> 
      </dg:DataGridTemplateColumn> 

私のコード:

private List<Book> MyProd = new List<Book>(); 
    private Book myProduct = null; 

    private void Checked(object sender, RoutedEventArgs e) 
    { 
     this.myProduct = new Book(); 
     this.myProduct = (Book)dataGrid.CurrentItem; 
     MessageBox.Show(this.myProduct.No.ToString()); 
    } 

class Book 
{ 
    public int No{ get; set; } 
    public string NameBook { get; set; } 
    public string Author { get; set; } 
    public string Description { get; set; } 
    public string DateRegister { get; set; } 
    public Int64 Price { get; set; } 
    public bool Selecting { get; set; } 
} 

答えて

0

チェックボックスのチェック/チェックなしのイベントが実際にプリミティブToggleButton.Checked /チェックなしのタイプであり、その使用は励まされていません開発者コミュニティ代わりに、複数のを持っていることの

代わりにあなたがCheckBox.Clickイベントを処理し、そのハンドラ内ですることができます....

if (((CheckBox)sender).IsChecked.GetValueOrDefault(false)) 
{ 
     //// Your Checked Code Here ... 
} 
else 
{ 
     //// Your unchecked code here ... 
} 

これらをチェックし、コードの繰り返し実行を避ける必要があります...実際には

チェックボックスは、同じクリックイベントハンドラを処理する場合、Button.Clickという呼び出されたルーティングイベントのバブリングを使用することができます。

  1. ハンドルボタン。DataGridレベルでクリックします。

    <dg:DataGrid Button.Click="CheckBoxClick" ... > 
         .... 
    
  2. テンプレート列にチェックボックスの名前を付けます。

    <CheckBox IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" x:Name="LocalColumnCheckbox" /> 
    
  3. CheckBoxClickハンドラで

    このコードを使用して...

    private void CheckBoxClick(object sender, RoutedEventArgs e) 
    { 
         var checkBox = e.OriginalSource as CheckBox; 
         if (checkBox != null && checkBox.Name == "LocalColumnCheckbox") 
         { 
           if (checkBox.IsChecked.GetValueOrDefault(false)) 
           { 
              //// Your Checked Code Here ... 
           } 
           else 
           { 
              //// Your unchecked code here ... 
           } 
         } 
    } 
    

このことができますなら、私に知らせてください。

+0

ベストアンサー。ありがとうございます – mrJack