2009-09-29 2 views
6

Привет Я пытаюсь иметь MenuItem.Icon набор через стилевой сеттер:Невозможно установить System.Windows.Controls.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». Ошибка при объекта «System.Windows.Controls.Image» в файле разметки «WpfApplication1; компонент/application.xaml» Строка 164 Позиция 26.

В другой стороны, это пример, в приведенной выше ссылке:

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

Спасибо.

ответ

1

Я desperatly поиска в Интернете для ответа, и я думаю, что это ошибка WPF.

Я сообщил об этом @Microsoft Connect, пожалуйста, проголосуйте и подтвердите или поделитесь своими идеями с Microsoft, если у вас есть.

Update
This пост помог мне много.

1

Я столкнулся с той же проблемой. Я нашел ту же ошибку на aonther thread 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> 

Есть ли какие-либо обновления? Благодаря!

+0

Кажется, что не работает. – Shimmy

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> 

С уважением, Питер

+1

Это не то, что я спросил, но это не работает. – Shimmy

Смежные вопросы