使用获取System.Windows.Baml2006.TypeConverterMarkupExtension错误的触发器更改图像

时间:2013-01-24 21:47:49

标签: c# wpf triggers

我写了这段代码:

<Image>
   <Image.Style>
      <Style TargetType="{x:Type Image}">
         <Style.Triggers>
            <DataTrigger Binding="{Binding MyProperty}" Value="Play">
               <Setter Property="Source" Value="bin\debug\Tasto Play.jpeg"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding MyProperty}" Value="Pause">
               <Setter Property="Source" Value="bin\debug\Tasto Pause.jpeg"/>
            </DataTrigger>
         </Style.Triggers>
       </Style>
   </Image.Style>
</Image>

但是当我运行调试时会出现错误。错误是System.Windows.Baml2006.TypeConverterMarkupExtension。

MyProperty是字符串。

有人可以帮助我吗?

谢谢, 雅格布。

2 个答案:

答案 0 :(得分:0)

我认为可能是MyProperty属性类型:如果它是字符串,则没有问题,但如果是,例如枚举,则必须设置类型:

 <Image>
   <Image.Style>
      <Style TargetType="{x:Type Image}">
         <Style.Triggers>
            <DataTrigger Binding="{Binding MyProperty}" Value="{x:Type namespace:EnumType.Play}">
               <Setter Property="Source" Value="bin\debug\Tasto Play.jpeg"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding MyProperty}" Value="{x:Type namespace:EnumType.Pause">
               <Setter Property="Source" Value="bin\debug\Tasto Pause.jpeg"/>
            </DataTrigger>
         </Style.Triggers>
       </Style>
   </Image.Style>
</Image>

也许可能是setter属性,source(我认为)属于Uri类型,也许你没有很好地格式化字符串,也许你必须使用absulute uri(用于测试),但我认为它格式不是很好字符串路径,因此Xaml的转换器无法正确创建Uri类型。

希望这可以有所帮助,或者给你一些想法。

答案 1 :(得分:0)

要在项目中添加图像作为资源,您必须单击“Visual Studio菜单栏”中的“项目”,然后单击“项目属性”。 然后会在屏幕上打开一个带有各种工具栏(如互联网)的窗口。 选择“资源工具栏” (查看http://i.stack.imgur.com/IjC0w.jpg处的图片) 然后单击窗口顶部“添加资源”按钮旁边的箭头。 单击“添加现有文件”,然后选择该文件。 然后进入“浏览解决方案窗口”并打开将具有新资源的“调试文件夹”。 在已添加的新资源上单击“鼠标右键” 然后单击“属性”。 在屏幕的左侧将出现“属性窗口”。 (查看http://i.stack.imgur.com/NqIc1.jpg处的图片)

您必须在“资源”项目中选择“编制操作”。 现在,您可以将图像用作wpf中的资源。

我希望这可以有所帮助。 雅格布