无法通过setter设置System.Windows.Controls.MenuItem.Icon

时间:2009-09-29 23:44:59

标签: wpf xaml icons contextmenu menuitem

您好我正试图通过样式设置器设置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'中的对象'System.Windows.Controls.Image'出错。第164行位置26。

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

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

感谢。

3 个答案:

答案 0 :(得分: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>

有更新吗?谢谢!

答案 1 :(得分:1)

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

我报告了@ Microsoft Connect,如果你有的话,请投票并验证或与微软分享您的想法。

<强>更新
This帖子给了我很多帮助。

答案 2 :(得分: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>

此致 彼得