Этот ответ относится к современным настройкам (машинописный текст 2.x, веб-пакет> 2.x)
вам НЕ нужно устанавливать @ types / node (который является узлом .js вводит и не имеет отношения к внешнему коду, фактически усложняя такие вещи, как setTimout, различное возвращаемое значение и т. д.
вам НЕОБХОДИМО установить @ types / webpack-env
npm i -D @types/webpack-env
, который выдает сигнатуры времени выполнения, которые есть у веб-пакета (включая require и require.ensure и т. Д.)
также убедитесь, что ваш tsconfig.json не имеет установленного массива 'types' ->, который будет сделайте так, чтобы он принимал все определения типов в вашей папке node_modules / @ types. Если вы хотите ограничить поиск типов, вы можете установить для свойства typeRoot значение node_modules / @ types
Я думаю, что в реальных сценариях простой обработчик кликов, вероятно, лучше, чем чрезмерно сложные системы на основе команд, но вы можете сделать что-то вроде этого:
используя RelayCommand из этой статьи http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
public class MyCommands
{
public static readonly ICommand CloseCommand =
new RelayCommand( o => ((Window)o).Close() );
}
<Button Content="Close Window"
Command="{X:Static local:MyCommands.CloseCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}}"/>
Все, что нужно, - это немного XAML ...
<Window x:Class="WCSamples.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Close"
Executed="CloseCommandHandler"/>
</Window.CommandBindings>
<StackPanel Name="MainStackPanel">
<Button Command="ApplicationCommands.Close"
Content="Close Window" />
</StackPanel>
</Window>
И немного C # ...
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
this.Close();
}
(адаптировано из этой статьи MSDN )