У меня есть элемент внутри границы, который я изменяю его видимость на видимый, по нажатию кнопки.
Когда эта кнопка нажата, и отображается элемент границы, я помещаю элемент границы в качестве элемента с фокусом:
<Border Name="MasterBorder" BorderBrush="#737373" BorderThickness="2" CornerRadius="6" Margin="19,0,0,-25" HorizontalAlignment="Left" Width="26" Background="#595959" Grid.Column="0" Visibility="Hidden" LostFocus="c_LostFocus">
<Slider Name="Master" Orientation="Vertical" Minimum="0" Maximum="100" Margin="2" />
</Border>
И управление щелчком:
Private Sub VolumeControl_Click(sender As Object, e As RoutedEventArgs)
FocusManager.SetFocusedElement(MainPlayPage, MasterBorder)
End Sub
Если я делаю GetFocusedElement, это возвращает MasterBorder, поэтому я предполагаю, что это правильно. У меня есть
LostFocus="c_LostFocus"
на моей кнопке при следующем срабатывании.
Private Sub c_LostFocus(sender As Object, e As RoutedEventArgs)
MessageBox.Show("Lost Focus")
End Sub
Моя проблема в том, что когда я открываю элемент управления и он фокусируется, все работает нормально, если я использую ползунок управления, а затем щелкаю вне элемента управления, запускается функция потерянного фокуса. Если я не взаимодействую с ползунком или рамкой и щелкаю где-то за его пределами, чтобы убрать фокус, моя функция потерянного фокуса не сработает. Есть идеи, почему это будет?
Дополнительный обработчик в главном окне для изменения фокуса:
Public Sub OnPreviewMouseDownA(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
FocusManager.SetFocusedElement(MainWindow, MainWindow)
End Sub