Горячая клавиша управляет для Silverlight в MVVM?

Я наслаждаюсь классиком, "каково различие между LinkedList и ArrayList (или между связанным списком и массивом/вектором) и почему Вы выбрали бы один или другой?"

вид ответа, на который я надеюсь, является тем, который включает обсуждение:

  • производительность вставки
  • итеративное выполнение
  • выделение памяти / влияние перераспределения
  • влияние удаления элементов с начала/середины/конца
  • , как знание (или не знание) максимальный размер списка могут влиять на решение
8
задан RandomEngy 25 September 2009 в 15:46
поделиться

3 ответа

Похоже, вы ищете "бескодовый" способ MVVMish для обработки события KeyUp / KeyPress / KeyDown.

Вариант №1: Призма.
Вы упомянули он только отправляет с командой Click. Однако вы можете добавить свои собственные подключенные DP, чтобы включить команды для любого события, которое вы хотите (например, KeyUp / KeyDown / KeyPress).

Если вы ищете образец того, у Кори есть хороший образец для событий ToggleButton.Checked / Unchecked.
http://www.85turns.com/2009/06/24/togglebutton-command-for -prism /

<ToggleButton x:Name="ToggleButton1" 
            customCommands:Checked.Command="{Binding CheckedCommand}"
            customCommands:UnChecked.Command="{Binding UnCheckedCommand}"
        Margin="8,8,0,8" Content="Check me"
        />

Кроме того, у Эрика Морка есть отличное видео, которое дает вам хороший обзор команд и того, как создать собственную команду Attached DP. http://development-guides.silverbaylabs.org/Video/Prism-Commands

Вариант №2: Триггеры смешивания
Expression Blend SDK поставляется с триггерами и поведением, которые точно определяют, что вы попробуйте сделать.
Примеры смешивания Проект codeplex поставляется с EventTrigger, который вы можете использовать:

<i:EventTrigger EventName="Click">
      <si:InvokeDataCommand Command="{Binding ShoppingCart.CheckOutCommand}"/>
</i:EventTrigger>

Или вы можете создать свой собственный триггер для событий нажатия клавиш и делать там все, что захотите. Вот пример:
http://azurecoding.net/blogs/brownie/archive/2009/04/06/blend-behaviors-ftw.aspx

9
ответ дан 5 December 2019 в 19:01
поделиться

Вы имеете в виду Ctrl + v или подобное Я видел следующий пример на сайте MSDN .

void Canvas_KeyUp(object sender, KeyEventArgs e)
{
    //check for the specific 'v' key, then check modifiers
    if (e.Key==Key.V) { 
        if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) {
        //specific Ctrl+V action here
        }
    } // else ignore the keystroke
}
0
ответ дан 5 December 2019 в 19:01
поделиться

Инструментарий MVVM содержит интересный класс CommandReference который позволяет связывать InputBindings с командами ViewModel. Я не уверен, что это работает для Silverlight, но вы можете попробовать ...

Хорошо, как указал RandomEngy, в Silverlight нет InputBindings ...

Однако я думаю, что вы могли бы использовать прикрепленный поведение. Это способ «привязать» событие к команде ViewModel. Марлон Греч имеет здесь хорошую реализацию

0
ответ дан 5 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: