2017-06-21 165 views
0

我正在開發一個程序,該程序應通過單擊它來更改複選框狀態。PreviewMouseLeftButtonUp不適用於DataGrid中的項目

我用了一個「PreviewMouseLeftButtonUp」事件。問題是,當我按下一個項目時,它不會被調用。如果我點擊Datagrid中的空白位置,它只會被調用。

代碼:

Private Sub BefundePat1_PreviewMouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles BefundePat1.PreviewMouseLeftButtonUp 

    Dim cell As DataGridCell = getGridCell(e.OriginalSource) 
    If Not cell Is Nothing Then 
     If BefundePat1.Columns(BefundePat1.Columns.Count - 1) Is cell.Column Then 
      If TypeOf cell.DataContext Is DataRowView Then 
       Dim dr As DataRowView = cell.DataContext 
       If dr.Row.Item("NR_TAKE") = True Then 
        dr.Row.Item("NR_TAKE") = False 
       Else 
        dr.Row.Item("NR_TAKE") = True 
       End If 
      End If 
     End If 
    End If 

End Sub 

是否有可能得到它通過的PreviewMouseLeftButtonDown事件中,我也有在PROGRAMM分心?

親切的問候

+0

當你點擊什麼項目時它不會被調用?此外,默認點擊時CheckBox會被選中/取消選中,所以你在這裏試圖解決什麼問題? – mm8

+0

如果在datagrid中是數據表的某些項目。如果這個itemsource沒有任何事件會被調用,否則不會。 – xcrookedxedge

+0

「BefundePat1」是DataGrid嗎? – mm8

回答

1

我不知道你正試圖在這裏做的,但土特產品可以嘗試定義一個CellStyle是提高每個DataGridCell事件。從事件處理程序刪除Handles BefundePat1.PreviewMouseLeftButtonUp和XAML標記添加樣式:

<DataGrid x:Name="BefundePat1" ...> 
    <DataGrid.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <EventSetter Event="PreviewMouseLeftButtonUp" Handler="BefundePat1_PreviewMouseLeftButtonUp" /> 
     </Style> 
    </DataGrid.CellStyle> 
    ... 
</DataGrid> 

如果這不起作用,你可以嘗試處理PreviewMouseLeftButtonDown事件。如果您需要更多幫助,請澄清您的要求。

+0

我試過了,但不起作用。我現在在PreviewMouseLeftButtonDown事件正在運行時調用PreviewMouseLeftButtonUp。感謝您的幫助。 – xcrookedxedge

相關問題