2012-01-18 1 views
0

На этот раз мне трудно для вас :-)управление передачей другого элемент управления WPF во время MouseDown

В настоящее время я собираюсь разработать UserControl в МОФ. Я хочу, чтобы этот элемент управления открыл слайдер, как только один нажимает кнопку мыши на определенной кнопке внутри этого элемента управления. Пользователь должен иметь возможность перемещать этот слайдер до тех пор, пока нажимается кнопка мыши.

Как только пользователь отпускает кнопку мыши, ползунок должен исчезнуть.

У меня уже есть решение для этого, но оно очень хакерское, потому что я делаю это через экранные координаты.

Есть ли способ сделать это приятным способом с WPF?

Любая помощь очень восприимчива!

С уважением, Майкл

ответ

0

Пожалуйста, ответьте на эти вопросы первые

  1. Что текущий XAML и код позади?
  2. Пока указатель ползунка получает , перетащил по его длине, вы хотите, чтобы кнопка была постоянно нажата?
  3. Если да, то вы использовали ToggleButton, потому что он может быть нажат повсюду и может быть переключен (не нажато), когда вы устанавливаете его свойство IsChecked в значение false (то есть когда пользователь отпускает мышь).
  4. Вы проверили состояние кнопки мыши как Pressed (от кнопки event args e), когда мышь перемещается, перетаскивается, над каким-то элементом, таким как ползунок здесь?

, например.

e.LeftButton == MouseButtonState.Pressed 

EDIT

Относящиеся к точке нет. 2 ....

Причина, по которой я предлагаю ToggleButton, заключается в том, что только при нажатии на слайдер можно удерживать нажатой клавишу. В противном случае с помощью обычной кнопки вы можете открыть всплывающее окно слайдера при нажатии кнопки, но при переходе на ползунок кнопка потеряет свое состояние Pressed.

Кроме того, свойство IsChecked объекта ToggleButton может быть связано двумя способами с свойством ползунка IsOpen. Таким образом, когда пользователь перестает перемещаться и отпускает мышь, мы можем установить IsOpen всплывающего окна как ложное, и это автоматически будет unpress togglebutton из-за этой двухсторонней привязки.

+0

Вот часть того, что я имею в XAML части до сих пор:

+0

2. Да, поскольку обработка должна быть максимально простой. Я не хочу, чтобы пользователь дважды нажимал кнопку мыши. 3. Нет. Я использовал обычную кнопку. В чем преимущество использования кнопки переключения? 4. Вы имеете в виду, что я должен использовать события перетаскивания для перемещения слайдера? – Michael

+0

См. Мое изменение в ответе выше. –