2009-09-29 10 views
6

Hi usiłuję mają MenuItem.Icon ustawiony thru setter stylu:Nie można ustawić System.Windows.Controls.MenuItem.Icon thru 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> 

otrzymuję następujący wyjątek w czasie wykonywania: Nie można dodać zawartość typu "System.Windows.Controls.Image" do obiektu typu "System.Object". Błąd na obiekcie „” w pliku System.Windows.Controls.Image znaczników „WpfApplication1; części/application.xaml” Linia 164 Pozycja 26.

W drugiej strony, jest to przykład na powyższym linku:

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

Dzięki.

Odpowiedz

1

byłem desperatly przeszukując internet w poszukiwaniu odpowiedzi i myślę, że jest to błąd WPF.

Zgłosiłem to @Microsoft Connect, proszę głosuj i zatwierdź lub podziel się swoimi pomysłami z Microsoft, jeśli masz jakieś.

Aktualizacja
This po bardzo mi pomogło.

1

Napotkali na ten sam problem. Znalazłem ten sam błąd na wątku aonther http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/81a106dd-4d06-4506-820a-30fe96a39112. Zgodnie z ich rozwiązaniem, możesz spróbować tego. Ale bindowanie jest wykonywane tylko dla ostatniego elementu w kolekcji MenuItem. To takie złe!

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

Czy są jakieś aktualizacje? Dzięki!

+0

Wygląda na to, że nie działa. – Shimmy

0

Następny kod rozwiąże ten problem.

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

Pozdrawiam, Peter

+1

Nie o to prosiłem, ale i tak to nie działa. – Shimmy

Powiązane problemy