我一直遇到一些与WPF设计器有关的奇怪问题,它声称无法实例化用户控件,即使我运行程序时,它运行得很好,我已经设法找到了这段代码这导致了问题,但我无法理解为什么。
清洁解决方案后:
清洁&重建:
错误讯息:Error 1 Cannot locate resource 'userinterface/visualresources/images/error.png'. C:\Users\......\Armt\Armt\UserInterface\Views\MainWindow.xaml 21 9 Armt
这是它声称有问题的代码:
<GridViewColumn >
<GridViewColumn.CellTemplate>
<DataTemplate DataType="models:Issue">
<Image x:Name="image" Source="/UserInterface\VisualResources\Images\information.png" Height="14" Width="14" />
******FROM HERE******
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Severity}" Value="Error" >
<Setter TargetName="image" Property="Source" Value="/UserInterface\VisualResources\Images\error.png" />
</DataTrigger>
<DataTrigger Binding="{Binding Severity}" Value="Warning" >
<Setter TargetName="image" Property="Source" Value="/UserInterface\VisualResources\Images\warning.png" />
</DataTrigger>
</DataTemplate.Triggers>
******END******
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
删除DataTemplate.Triggers
部分使得一切都在设计器内外工作,如果我选择IssuesListView UserControl选项卡并点击重建,只有当我改回主视图选项卡时,错误才会消失又回来了。
这是UserControl的构造函数:
public IssuesListView()
{
InitializeComponent();
// To avoid design-time issues
if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
{
DataContext = ((App)Application.Current).GetInstance<IssuesListViewVm>();
}
}
这里可能发生什么?不知何故,设计师无法找到资源,但在运行时它呢?