2016-07-23 94 views
0

DataGridでチェックされている連絡先にのみSMSを送信する必要があるWPFアプリケーションを開発しています。マウスのスクロールでWPF DataGridのチェックボックスの自動チェックとチェックを外す

DataGridで目的の連絡先を確認した後、下にスクロールすると問題が発生します。 DataGridのチェックボックスのチェックされたプロパティは、ランダムに変更されます。

私は、次のプロパティを追加することを提案いくつかの解決策に出くわした:

  • VirtualizingStackPanel.VirtualizationMode DataGrid内=データグリッド
  • で「標準」
  • VirtualizingStackPanel.IsVirtualizing =「真」(私はそれを設定すると、 falseの場合、アプリケーションは)バインディングチェックボックスに
  • UpdateSourceTrigger = "にPropertyChangedを" 完全に応答しなくなっ
  • EnableRowVirtualization DataGrid内= "真"
  • EnableColumnVirtualization = DataGridの "True"

私はそれらを試しましたが、どれもうまくいきませんでした。

XAML:

<StackPanel Orientation="Horizontal"> 
     <DataGrid x:Name="smsgrid" VirtualizingStackPanel.VirtualizationMode="Standard" VirtualizingStackPanel.IsVirtualizing="True" Margin="10,20,0,10" AutoGenerateColumns="False" IsReadOnly="True" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserSortColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTemplateColumn> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <CheckBox x:Name="chkbox" Checked="chkbox_Checked" Unchecked="chkbox_Checked"></CheckBox> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
       <DataGridTextColumn Header="ID" Binding="{Binding ID}"></DataGridTextColumn> 
       <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn> 
       <DataGridTextColumn Header="Mobile no." Binding="{Binding Mobile1}"></DataGridTextColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
     ... 
<StackPanel> 

Iは水平にログインページ(上記XAMLに貼り付けられていない)と、対応するチェックボックスが選択された場合に携帯電話番号を格納するためのリストを積層するのStackPanelを使用しています。また、チェックボックスのcheckedプロパティの値が変更されると、Listの値は変更されないことにも注意してください。

DataGridのチェックボックスを自動的にチェックしたりチェックを外したりすることを避けるための解決策が得られれば、本当にうれしいでしょう。

ありがとうございました!

答えて

0

アプリケーションが完全に応答しなくなるため、仮想化を無効にしないほうがよいでしょう。あなたが直接DataGridCheckBoxColumn、不要重いDataGridTemplateColumn

<DataGridCheckBoxColumn Binding="{Binding NeedSendSms}"/> 

が、その後のViewModelにあなたがNeedSendSms持つすべての連絡先を取得することができます使用することができます

はtrueです。

まだDataGridTemplateColumnを使用する場合は、CheckBoxのIsCheckedプロパティをバインドして、自動チェックとチェックを外す必要があります。

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <CheckBox IsChecked="{Binding NeedSendSms}"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
+0

これを試しました。しかし、それは動作しません。チェックボックスはマウスのスクロールでも自動的にチェック/チェックされません。 – ManuM

関連する問題