Добавление EventTrigger в ListView внутри DataTemplate приводит к исключению XamlParseException.

Я создаю приложение WPF с помощью MVVMLight. Я определил ListView внутри шаблона данных TabControl, например:

<TabControl.ContentTemplate>
    <DataTemplate>
        <ListView ItemsSource="{Binding Builds}"
            ScrollViewer.HorizontalScrollBarVisibility="Disabled"
            SelectedItem="{Binding SelectedBuild,
                                    Mode=TwoWay}"
            SelectionMode="Single">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDoubleClick">
                    <i:InvokeCommandAction Command="{Binding BuildSelectedCommand}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ListView>
    </DataTemplate>
</TabControl.ContentTemplate>

но конструктор XAML возвращает эту ошибку (предотвращая загрузку предварительного просмотра конструктора):

XamlObjectWriterException: Collection property 'System.Windows.Controls.ListView'.'Triggers' is null.
at System.Xaml.XamlObjectWriter.WriteGetObject()
at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)

моя команда определена так в моей ViewModel:

 private RelayCommand _buildSelectedCommand;
 public RelayCommand BuildSelectedCommand => _buildSelectedCommand ??
        (_buildSelectedCommand = new RelayCommand(BuildSelectedAction));

Я впервые вижу эту ошибку, и она происходит только во время разработки, при сборке и выполнении все в порядке. Удаление i:Interaction.Triggers решает проблему, но мне нужно событие DoubleClick в списке.

Если вы спросите, почему я не добавил триггер на уровне ListItem, это потому, что я должен установить свойство в ViewModel, связывающее шаблон данных TabControl, а не ListItem ViewModel.

Большое спасибо за помощь!


person Luca Spolidoro    schedule 17.11.2016    source источник


Ответы (1)


Я только что убедился, что это ошибка Visual Studio 2015, она не воспроизводится в Visual Studio 2017 RC.

person Luca Spolidoro    schedule 18.11.2016