我是要靠这样搞定的:(vb.net)#Region "TextChanged" Private Sub UserName_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles UserName.KeyUp UserNameTextChanged() End Sub Private Sub UserName_LostFocus(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles UserName.LostFocus UserNameTextChanged() End Sub Private Sub UserName_PreviewTextInput(ByVal sender As Object, ByVal e As System.Windows.Input.TextCompositionEventArgs) Handles UserName.PreviewTextInput UserNameTextChanged() End Sub Private Sub UserNameTextChanged() If UserName.Text Is Nothing Then Else If UserName.Text.Trim = String.Empty Then ButtonRemove.Visibility = Windows.Visibility.Hidden Else For Each Item In UserName.Items If Item = UserName.Text.Trim Then ButtonRemove.Visibility = Windows.Visibility.Visible Else ButtonRemove.Visibility = Windows.Visibility.Hidden End If Next End If End If End Sub #End Region
我是要靠这样搞定的:(vb.net) #Region "TextChanged" Private Sub UserName_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles UserName.KeyUp UserNameTextChanged() End Sub Private Sub UserName_LostFocus(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles UserName.LostFocus UserNameTextChanged() End Sub Private Sub UserName_PreviewTextInput(ByVal sender As Object, ByVal e As System.Windows.Input.TextCompositionEventArgs) Handles UserName.PreviewTextInput UserNameTextChanged() End Sub Private Sub UserNameTextChanged() If UserName.Text Is Nothing Then Else If UserName.Text.Trim = String.Empty Then ButtonRemove.Visibility = Windows.Visibility.Hidden Else For Each Item In UserName.Items If Item = UserName.Text.Trim Then ButtonRemove.Visibility = Windows.Visibility.Visible Else ButtonRemove.Visibility = Windows.Visibility.Hidden End If Next End If End If End Sub #End Region
终于碰上一个用WPF的了。我告诉你一个最方便的方法。你可以重写combobox的controltemplate你用xamlpad查一下就知道在combobox的视觉树里面,会有textbox,你响应它的textchanged事件就好了。
用这个来查看视觉树。重写controltemplate可以看MSDN,很全。combobox里面textbox 的name是PART_EditableTextBox
Private Sub UserName_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles UserName.KeyUp
UserNameTextChanged()
End Sub
Private Sub UserName_LostFocus(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles UserName.LostFocus
UserNameTextChanged()
End Sub
Private Sub UserName_PreviewTextInput(ByVal sender As Object, ByVal e As System.Windows.Input.TextCompositionEventArgs) Handles UserName.PreviewTextInput
UserNameTextChanged()
End Sub
Private Sub UserNameTextChanged()
If UserName.Text Is Nothing Then
Else
If UserName.Text.Trim = String.Empty Then
ButtonRemove.Visibility = Windows.Visibility.Hidden
Else
For Each Item In UserName.Items
If Item = UserName.Text.Trim Then
ButtonRemove.Visibility = Windows.Visibility.Visible
Else
ButtonRemove.Visibility = Windows.Visibility.Hidden
End If
Next
End If
End If
End Sub
#End Region
#Region "TextChanged"
Private Sub UserName_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles UserName.KeyUp
UserNameTextChanged()
End Sub
Private Sub UserName_LostFocus(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles UserName.LostFocus
UserNameTextChanged()
End Sub
Private Sub UserName_PreviewTextInput(ByVal sender As Object, ByVal e As System.Windows.Input.TextCompositionEventArgs) Handles UserName.PreviewTextInput
UserNameTextChanged()
End Sub
Private Sub UserNameTextChanged()
If UserName.Text Is Nothing Then
Else
If UserName.Text.Trim = String.Empty Then
ButtonRemove.Visibility = Windows.Visibility.Hidden
Else
For Each Item In UserName.Items
If Item = UserName.Text.Trim Then
ButtonRemove.Visibility = Windows.Visibility.Visible
Else
ButtonRemove.Visibility = Windows.Visibility.Hidden
End If
Next
End If
End If
End Sub
#End Region
第一种:如http://liuqi740924.blog.163.com/blog/static/803471542010834316688/
大哥所说第二种:通过楼上的楼上的楼上的……所说的VisualTree,具体使用系统内置的VisualTreeHelper类例如你想找this.cbStandards的TextBox控件,可如下索取
((TextBox)VisualTreeHelper.GetChild( (DependencyObject)(VisualTreeHelper.GetParent( (DependencyObject)this.cbStandards)),1))
你可以给这个东东加事件。