2012-03-22 2 views
1

У меня есть куча красных кнопок в моем приложении, поэтому вместо определения стилей повсюду, что я поместил это в моем App.xamlПрименение стилей ресурсов проблема (с Prism)

<Application.Resources> 
    <Style x:Key="RedButton" TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="#FF830722" /> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="FontWeight" Value="Bold" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Red" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Application.Resources> 

Мне нужно отключить некоторые красные кнопки в приложении через привязку данных. Кажется, он отображается правильно в режиме просмотра.

 <Button Style="{StaticResource RedButton}" Content="Search" Height="23" HorizontalAlignment="Left" Margin="449,13,0,0" Name="searchButton" VerticalAlignment="Top" Width="75" Click="searchButton_Click" /> 
     <Button Content="Add Item(s)" Margin="0,0,12,12" Name="addProductButton" Height="23" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="108" Click="addProductButton_Click"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}" BasedOn="{StaticResource RedButton}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=searchDataGrid, Path=SelectedIndex}" Value="-1"> 
          <Setter Property="IsEnabled" Value="False" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

При запуске приложения я получаю сообщение об ошибке:

'Обеспечить значение на 'System.Windows.StaticResourceExtension' бросил исключение. Номер строки «25» и позиция линии «140».

Я предполагаю, что у него проблемы с поиском StaticResource. Нужно ли добавлять xmlns?

Редактировать: Это приложение призмы, которое имеет 3 основных проекта.

  • Shell - имеет отношение к OrderModule и инфраструктуры
  • OrderModule - имеет отношение к инфраструктуре
  • Инфраструктура

UserControl, который имеет кнопку I» m, пытающийся использовать стиль, находится в проекте OrderModule. Я собираюсь попытаться создать словарь ресурсов в проекте инфраструктуры и интегрировать его с App.xaml (вроде выстрела в темноте)

It ошибки на первой кнопке, которая не использует BasedOn. InnerException is

Не удается найти ресурс с именем RedButton. Названия ресурсов - это случай чувствительный.

+0

Ваш код работает в моем окружении. Можете ли вы попытаться предоставить FallbackValue в своем Binding и сообщить, если он вносит какие-либо изменения? – Markus

+0

спасибо за ваши уточнения, я удалил свой ответ, поскольку он больше не используется, но я думаю, что это определенно идет в правильном направлении, WPF, очевидно, имеет проблемы с загрузкой стиля в данный момент, и ваша архитектура, вероятно, по крайней мере частично проблемы, как я вижу. – David

ответ

1

Существует еще одно распространенное место, которое WPF использует для поиска стилей и шаблонов, а именно ресурсный словарь Generic.xaml в папке «Темы» в корне проекта. Я бы создал эту папку в OrderModule или Infrastructure и определил там стиль.

+0

Да, я закончил тем, что добавил ResourceDictionary в свой проект (должен был изменить проект из библиотеки классов в библиотеку управления пользователями) ... затем объединил этот ресурс в app.xaml, и он работает. благодаря –

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