Я создаю приложение 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.
Большое спасибо за помощь!