6

嗨,我正在尝试通过样式设置器设置MenuItem.Icon :

<Style x:Key="MenuItem_Delete" TargetType="MenuItem"
        BasedOn="{StaticResource {x:Type MenuItem}}">
    <Setter Property="Header" Value="_Delete"/>
    <Setter Property="MenuItem.Icon">
        <Setter.Value>
            <Image Source="Resources/Delete.png"/>
        </Setter.Value>
    </Setter>
</Style>

我在运行时遇到以下异常:无法将“System.Windows.Controls.Image”类型的内容添加到“System.Object”类型的对象。标记文件“WpfApplication1;component/application.xaml”第 164 行位置 26 中的对象“System.Windows.Controls.Image”出错。

另一方面,这是上面链接中的示例:

<MenuItem Header="New">
  <MenuItem.Icon>
    <Image Source="data/cat.png"/>
  </MenuItem.Icon>
</MenuItem>

谢谢。

4

3 回答 3

1

我遇到了同样的问题。我在另一个线程http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/81a106dd-4d06-4506-820a-30fe96a39112上发现了同样的错误。根据他们的解决方案,你可以试试这个。但绑定仅对 MenuItem 集合中的最后一个元素执行。太糟糕了!

<Style x:Key="MenuItem_Delete" TargetType="MenuItem"
    BasedOn="{StaticResource {x:Type MenuItem}}">
    <Style.Resources>
        <Image x:key="DeleteIcon" Source="Resources/Delete.png"/>
    </Style.Resources>
    <Setter Property="Header" Value="_Delete"/>
    <Setter Property="MenuItem.Icon" Value="{DynamicResource DeleteIcon}" />
</Style>

有更新吗?谢谢!

于 2009-10-13T06:19:10.237 回答
1

我拼命地在网上搜索答案,我认为这是一个 WPF 错误。

我在@Microsoft Connect上报告了它,如果您有想法,请投票并验证或与 Microsoft 分享您的想法。

更新
这篇文章对我帮助很大。

于 2009-11-16T19:30:44.820 回答
0

下一个代码将解决这个问题。

<Style x:Key="StyleNewContext" TargetType="MenuItem">
    <Style.Resources>
        <Image x:Key="ImageNewContext" Source="{StaticResource ImageSourceNewContext}" />
        <Image x:Key="ImageNewContextDisabled" Source="{StaticResource ImageSourceNewContextDisabled}" />
    </Style.Resources>
    <Setter Property="Icon" Value="{DynamicResource ImageNewContext}" />
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Icon" Value="{DynamicResource ImageNewContextDisabled}" />
        </Trigger>
    </Style.Triggers>
</Style>

问候,彼得

于 2009-10-16T09:19:25.893 回答