2009-09-29 15 views
6

Salut, je suis en train d'avoir un MenuItem.Icon mis à travers un poseur de style:Impossible de définir System.Windows.Controls.MenuItem.Icon à travers un setter

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

je reçois l'exception suivante lors de l'exécution: Impossible d'ajouter contenu de type 'System.Windows.Controls.Image' vers un objet de type 'System.Object'. Erreur à l'objet « System.Windows.Controls.Image » dans le fichier de balisage « WpfApplication1; composant/application.xaml » Ligne 164 Position 26.

En revanche, c'est l'exemple dans le lien ci-dessus:

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

Merci.

Répondre

1

Je cherchais désespérement le web pour une réponse et je pense que cela est un bug WPF.

Je l'ai signalé @Microsoft Connect, s'il vous plaît voter et valider ou partager vos idées avec Microsoft si vous en avez.

Mise à jour
This poste m'a beaucoup aidé.

1

J'ai rencontré le même problème. J'ai trouvé la même erreur sur un autre thread http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/81a106dd-4d06-4506-820a-30fe96a39112. Selon leur solution, vous pouvez essayer celui-ci. Mais la liaison s'exécute uniquement pour le dernier élément de la collection MenuItem. C'est tellement mauvais!

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

Y a-t-il des mises à jour? Merci!

+0

Cela ne semble pas fonctionner. – Shimmy

0

Le code suivant résoudra ce problème.

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

Cordialement, Peter

+1

Ce n'est pas ce que j'ai demandé mais ça ne marche quand même pas. – Shimmy