应用程序资源样式问题(使用Prism)

时间:2012-03-22 13:29:57

标签: wpf xaml styles prism

我的应用程序中有一堆红色按钮,所以我没有在各处定义样式,而是将它放在我的App.xaml中

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

修改 这是一个Prism应用程序,有3个主要项目。

  
      
  • 贝壳    - 引用了OrderModule和Infrastructure
  •   
  • OrderModule    - 参考基础设施
  •   
  • 基础设施
  •   

具有我试图使用该样式的Button的UserControl在OrderModule项目中。 我将尝试在Infrastructure项目中创建一个资源字典,并将其与App.xaml集成(在黑暗中进行一次拍摄)

在第一个不使用BasedOn的按钮上出错。 InnerException是

  

找不到名为'RedButton'的资源。资源名称是大小写的   敏感。

1 个答案:

答案 0 :(得分:1)

WPF用于搜索样式和模板的另一个常见位置是项目根目录下的Themes文件夹下的Generic.xaml资源字典。 我会在OrderModule或Infrastructure中创建该文件夹,并在那里定义样式。