我正在研究一个C#WPF项目,当鼠标悬停在该行上时,我在设置数据网格中的行颜色时出现问题,然后将该行重置回鼠标悬停之前的状态。
当我尝试将样式触发器添加到XAML时,然后抛出异常。
以下是XAML代码
<UserControl x:Class="ReportReader.UserControls.ReportViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignWidth="1024" d:DesignHeight="800" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">
<Grid>
<Label Content="Report for..." Margin="12,12,12,0" Name="lblReportDateTitle" FontSize="26" FontWeight="Bold" HorizontalContentAlignment="Center" Height="44" VerticalAlignment="Top" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,62,0,0" Name="cboRegisteredApps" VerticalAlignment="Top" Width="202" SelectionChanged="cboRegisteredApps_SelectionChanged">
<ComboBoxItem Content="Select App" IsSelected="True" />
</ComboBox>
<DataGrid RowStyle="{StaticResource gridCellStyle}" AutoGenerateColumns="True" Margin="14,415,12,12" Name="dataExceptionGroups" IsReadOnly="True" ColumnWidth="*">
</DataGrid>
<chartingToolkit:Chart DataContext="1,10 2,20 3,30 4,40" Margin="0,118,12,0" Name="chartExceptionStatusPieGraph" Title="Chart Title" HorizontalAlignment="Right" Width="408" Height="291" VerticalAlignment="Top">
<chartingToolkit:PieSeries DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" />
</chartingToolkit:Chart>
</Grid>
<UserControl.Resources>
<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
</UserControl>
以下是我得到的例外
'为'System.Windows.StaticResourceExtension'提供一个值 例外。'行号“11”和行位置“110”。
感谢您提供的任何帮助。
答案 0 :(得分:1)
从上到下解析XAML,并在加载XAML时在运行时解析所有StaticResource
引用。但资源gridCellStyle
定义在其使用之下,这就是解析器无法找到资源的原因。
在使用之前移动样式(declare resources before userControl content
) -
<UserControl>
<UserControl.Resources>
<Style x:Key="gridCellStyle">...</Style>
</UserControl.Resources>
<Grid>...</Grid>
</UserControl>
或者使用DynamicResource
以防定义资源低于其使用情况 -
<DataGrid RowStyle="{DynamicResource gridCellStyle}">