2011-12-20 76 views
2
private void OnChecked(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     LAB_TEST t = new LAB_TEST(); 
     CheckBox chk = (CheckBox)e.OriginalSource; 
     if (e.OriginalSource is CheckBox) 
     { 
      int OID = Convert.ToInt32(((CheckBox)chk).Tag); 
      t = eb.TestGetByOID(OID); 
      bool has = advisedTests.Any(test => test.OID == OID); 
      if (!has) 
      { 
       if (txtGrossAmount.Text != string.Empty) 
       { 
        decimal amount = Convert.ToDecimal(txtGrossAmount.Text); 
        amount += Convert.ToDecimal(t.PRICE); 
        txtGrossAmount.Text = amount.ToString(); 
       } 
       else 
       { 
        txtGrossAmount.Text = t.PRICE.ToString(); 
       } 
       advisedTests.Add(t); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 

    } 
} 

我面對這個問題,我已經在Datagrid的約束複選框,當我們點擊複選框應該在添加和我正在做一些簡單的數學計算文本框,它是這樣做的,但問題是,鼠標滾動上下自動檢查和取消選中複選框,現在文本框中選定的項目的總價格更多和選擇複選框少或有時更多,所以鼠標滾動向上或向下創建這個問題。任何想法???? 感謝在DataGrid鼠標滾動檢查,並取消選中複選框

Issue Preview

+2

請給出一個代碼示例來說明您的問題,並考慮澄清說明中的場景和問題。 –

+0

我同意,你的問題沒有明確說明。 – Josh

回答

0

我在Silverlight中有同樣的問題。當您滾動時,DataGrid會觸發RowLoading事件,並重新初始化CheckBoxes。我發現只有一種方法來解決它,不要使用內置的垂直滾動條DataGrid,insted設置DataGrid高度自動並將其放置在ScrollViewer中。

<ScrollViewer VerticalScrollBarVisibility="Visible"> 
    <DataGrid Height="Auto" /> 
</ScrollViewer> 
1

我有完全相同的問題,具有以下情形:

  • 你有一個DataGrid,每一行包含一個複選框
  • 的複選框有他們選中/未選中的事件設置:如果選擇是多個,所有複選框都被切換
  • 選擇多行
  • 選中一個複選框,選中整個選項
  • 保持所選行,並滾動,使他們看不見
  • 的入圍行復選框應檢查/只要他們由亞採工作給出的UI

解決方案消失下去,但內容鼠標滾輪不再滾動,鼠標光標必須位於滾動條上。

什麼,似乎在我的項目工作是將此屬性添加到DataGrid

ScrollViewer.CanContentScroll="False" 

這是非常奇怪的,因爲它告訴Datagrid的不被滾動的,但內容通過鼠標還是滾動輪子,並且切換複選框狀態的問題不再發生。

+0

幾年後我又遇到了這個問題,實際上,正確的答案是由thinco(IsVirtualizing on False)在下面的文章中給出的! – MrPingouin

0

您需要在您的Grid中設置VirtualizingStackPanel.IsVirtualizing="False"

相關問題