我的应用程序中有一堆红色按钮,所以我没有在各处定义样式,而是将它放在我的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'的资源。资源名称是大小写的 敏感。
答案 0 :(得分:1)
WPF用于搜索样式和模板的另一个常见位置是项目根目录下的Themes文件夹下的Generic.xaml资源字典。 我会在OrderModule或Infrastructure中创建该文件夹,并在那里定义样式。