WPF&MVVM: Библиотека System.Windows.Interactivity больше не доступна?

339
05 октября 2017, 10:37

В рамках урока по паттерну MVVM для приложений WPF мне нужно было добавить библиотеку System.Windows.Interactivity.dll через Reference Manager. Я её там не обнаружил (версия Visual Studio - 2017). На скриншоте ниже - всё, что есть в результатах поиска, начинающееся с System.Windows:

Я подумал, что возможно данная библиотека уже встроена в новую версию проекта WPF (хотя в списке уже подключённых ссылок её тоже нет), и когда добавил нижеследующий код в ApplicationViewModel.cs, никаких ошибок пока что не было отображено средой разработки:

private RelayCommand doubleCommand;
public RelayCommand DoubleCommand {
    get {
        return doubleCommand ??
        (doubleCommand = new RelayCommand(obj => {
            Phone phone = obj as Phone;
            if (phone != null) {
                Phone phoneCopy = new Phone {
                    Company = phone.Company,
                    Price = phone.Price,
                    Title = phone.Title
                };
                Phones.Insert(0, phoneCopy);
            }
        }));
    }
}

Однако, когда я добавил код XAML, то среда выдала сообщение о том, что в пространстве имён clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity не существует Interaction, EventTrigger и InvokeCommandAction:

<Window x:Class="MVVM_Tutorial.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MVVM_Tutorial"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
<!-- ... -->
    <Button Content="2x">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction
                    Command="{Binding DoubleCommand}"
                    CommandParameter="{Binding SelectedPhone}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>
<!-- ... -->
</Window>

Не знаю, каким образом это связано с библиотекой System.Windows.Interactivity, но как следует решить данную проблему?

Answer 1

Требуемая библиотека является частью Microsoft Expression Blend 4 SDK и не включена в стандартную поставку, но вы всегда можете подключить ее из NuGet Gallery: System.Windows.Interactivity.WPF by Microsoft

READ ALSO
WPF&amp;MVVM: Описание логики Relay Command

WPF&MVVM: Описание логики Relay Command

В данном уроке по паттерну MVVM для приложений WPF был такой пример:

351
C# Прорисовка участка формы вокруг курсора

C# Прорисовка участка формы вокруг курсора

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

314
Шаблон для Combobox

Шаблон для Combobox

В приложении WPF нужно создать свой Template для ComboboxПодскажите как убрать прямоугольник или задать ему радиус скругления = 0

636
С# Движение участка формы

С# Движение участка формы

C#, Windows forms Есть форма, 600 на 600 размерыПри запуске показывается её часть (верхний левый угол), 300 на 300 пикселей

275