Привязка клавиш RelayCommand

Когда вы ссылаетесь на * ngIf, предложение else не может быть произвольным компонентом, но это должен быть шаблон ng.

Например,

в компоненте, где у вас есть исходный код, подобный следующему:

Полученный исходный код должен выглядеть следующим образом:

ссылка: https://techoverflow.net/2018/02/17/how-to-fix-angular-typeerror-templateref-createembeddedview-is-not-a-function/

27
задан Joe White 21 June 2009 в 13:58
поделиться

5 ответов

Свойство Command класса KeyBinding не поддерживает привязку данных. Эта проблема будет решена в .NET 4.0, и вы сможете увидеть ее в следующей версии .NET 4.0 Beta 2.

14
ответ дан 28 November 2019 в 05:23
поделиться

Я не думаю, что вы можете сделать это из XAML, по причинам, которые вы описываете.

В итоге я сделал это в коде программной части. Хотя это код, это всего лишь одна строка кода, и все же довольно декларативный, так что я могу жить с этим. Тем не менее, я'

17
ответ дан 28 November 2019 в 05:23
поделиться

Предполагая, что ваши RoutedCommands определены статически:

#region DeleteSelection

    /// <summary>
    /// The DeleteSelection command ....
    /// </summary>
    public static RoutedUICommand DeleteSelection
        = new RoutedUICommand("Delete selection", "DeleteSelection", typeof(ChemCommands));

    #endregion

Свяжите в XAML таким образом:

<Canvas.InputBindings>
    <KeyBinding Key="Delete" Command="{x:Static Controls:ChemCommands.DeleteSelection}" />
</Canvas.InputBindings>

С уважением,

Тим Хотон

-1
ответ дан 28 November 2019 в 05:23
поделиться

Я создаю привязку Key в моей модели представления, которая связывает команду и Key следующим образом

        this.KeyBinding = new KeyBinding();
        //set the properties
        this.KeyBinding.Command = this.Command;
        this.KeyBinding.Key = this.Key;
        //modifier keys may or may not be set
        this.KeyBinding.Modifiers = this.ModifierKeys;

, затем я создаю коллекцию элементов InputBinding в корне моей модели представления и добавляю их в окна InputBindings в коде моего окна за

     foreach (var item in applicationViewModel.InputBindingCollection) {
        this.InputBindings.Add(item);
     }

это плохой тон делать что-то в коде, который я знаю, но я еще не знаю, как сделать привязку, однако я все еще работаю над этим. :) Единственное, что дает мне этот doent, - это список модификаторов ключевых команд в меню, но это еще не все.

0
ответ дан 28 November 2019 в 05:23
поделиться

Вы можете создать подкласс KeyBinding, добавить свойство зависимости CommandBinding , которое задает свойство Command, а затем добавить его в XAML, как любую другую входную привязку.

public class RelayKeyBinding : KeyBinding
{
    public static readonly DependencyProperty CommandBindingProperty =
        DependencyProperty.Register("CommandBinding", typeof(ICommand), 
        typeof(RelayKeyBinding),
        new FrameworkPropertyMetadata(OnCommandBindingChanged));
    public ICommand CommandBinding
    {
        get { return (ICommand)GetValue(CommandBindingProperty); }
        set { SetValue(CommandBindingProperty, value); }
    }

    private static void OnCommandBindingChanged(
        DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var keyBinding = (RelayKeyBinding)d;
        keyBinding.Command = (ICommand)e.NewValue;
    }
}

XAML:

<Window.InputBindings>
    <RelayKeyBinding 
        Key="PageUp" 
        CommandBinding="{Binding SelectPreviousLayerCommand}" />
</Window.InputBindings>
10
ответ дан 28 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

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