我有一个MVVM应用程序,我想在另一个视图中重用View,两个视图都是用户控件。
在第一个usercontrol的xaml中,我有这个:
<Button Command="{Binding ChangeInitCommand}">
<Image>
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="pack://application:,,,/images/Init-32.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsInit}" Value="True">
<Setter Property="Source" Value="pack://application:,,,/images/Deinit-32.png" />
</DataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Button>
最初我有<Image Source="/Images/Init-32.png">
,但这也产生了同样的问题。
当我在第二个用户控件中使用此usercontrol时,设计器显示错误:无法创建“第一个用户控件”的实例。我可以查看异常详细信息,它归结为:InnerExeption:找不到资源'images / init-32.png'
当没有将第一个usercontrol放在第二个usercontrol中时,一切正常。图像的构建操作是“资源”。
如何摆脱这个错误?
答案 0 :(得分:1)
更改包URI以包含程序集。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/aa970069(v=vs.100).aspx。
<Setter Property="Source" Value="pack://application:,,,/WpfApplication49;component/images/Init-32.png" />
将WpfApplication49替换为程序集名称。