使用触发器更改图像,获取 System.Windows.Baml2006.TypeConverterMarkupExte

本文关键字:System 获取 Windows Baml2006 TypeConverterMarkupExte 图像 触发器 | 更新日期: 2023-09-27 17:55:43

>我写了这段代码:

<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。

我的属性是字符串。

有人可以帮助我吗?

谢谢雅各布。

使用触发器更改图像,获取 System.Windows.Baml2006.TypeConverterMarkupExte

我认为这可能是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 属性,源(我认为)是 Uri 类型,也许您没有很好地格式化字符串,也许您必须使用绝对 uri(用于测试),但我认为它不是一个格式良好的字符串路径,因此 Xaml 的转换器无法正确创建 Uri 类型。

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

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

您必须在"编译操作"中选择"资源"项。现在,您可以将映像用作 wpf 中的资源。

我希望这会有所帮助。雅各布

相关文章: