【问题标题】:Unable to set System.Windows.Controls.MenuItem.Icon thru a setter无法通过设置器设置 System.Windows.Controls.MenuItem.Icon
【发布时间】:2010-12-02 12:03:22
【问题描述】:

您好,我正在尝试通过样式设置器设置 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>

谢谢。

【问题讨论】:

    标签: wpf xaml icons contextmenu menuitem


    【解决方案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>
    

    有更新吗?谢谢!

    【讨论】:

      【解决方案2】:

      接下来的代码会解决这个问题。

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

      问候, 彼得

      【讨论】:

        【解决方案3】:

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

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

        更新
        This 的帖子对我帮助很大。

        【讨论】:

          猜你喜欢
          • 2014-10-07
          • 2015-06-15
          • 2011-06-25
          • 2011-01-06
          • 1970-01-01
          • 1970-01-01
          • 2010-12-12
          • 2014-12-25
          • 1970-01-01
          相关资源
          最近更新 更多