我正在使用MVVMLight创建WPF应用。 我在TabControl DataTemplate中定义了一个ListView,如下所示:
<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 Designer会返回此错误(阻止加载设计器预览):
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 Datatemplate,而不是ListItem ViewModel。
非常感谢您的帮助!
答案 0 :(得分:2)
我刚刚确认这是一个Visual Studio 2015错误,它不会在Visual Studio 2017 RC中重现。