数据网格在鼠标上设置行样式

时间:2013-11-17 19:31:50

标签: c# wpf xaml datagrid

我正在研究一个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”。

感谢您提供的任何帮助。

1 个答案:

答案 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}">