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'のオブジェクト'System.Windows.Controls.Image'でエラーが発生しました。行164位置26。

一方、これは上記のリンクの例です。

<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

私は必死に答えを求めて Web を検索していましたが、これは 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 に答える