2010-06-02 68 views
1

我有一个DataGrid嵌套在另一个DataGrid的RowDetailsTemplate中。只要我的鼠标在父DataGrid的行的主要部分上滚动,滚动就可以正常工作,但当鼠标悬停在嵌套在RowDetailsTemplate中的DataGrid上时,它将停止滚动。嵌套在另一个DataGrid的RowDetailsTemplate中的Datagrid中断鼠标滚轮滚动

这里是DataGrid的设置:

<my:DataGrid Margin="-2,36,-2,1" 
         Background="White" 
         CanUserReorderColumns="True" 
         CanUserResizeRows="False" 
         ColumnHeaderHeight="35" 
         HorizontalGridLinesBrush="LightGray" 
         VerticalGridLinesBrush="White" 
         x:Name="testList" 
         VerticalScrollBarVisibility="Visible" 
         FlowDirection="LeftToRight" 
         AutoGenerateColumns="False" 
         IsReadOnly="True" 
         ScrollViewer.CanContentScroll="False" 
         SelectionMode="Single" 
         HeadersVisibility="Column" 
         GridLinesVisibility="None" 
         > 

       <my:DataGrid.Columns> 

        <my:DataGridTemplateColumn MinWidth="60" CanUserSort="True" SortMemberPath="ResultType"> 
         <my:DataGridTemplateColumn.Header> 
          <TextBlock FontSize="14" Text="Result"></TextBlock> 
         </my:DataGridTemplateColumn.Header> 
         <my:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Grid Margin="4" VerticalAlignment="Center" HorizontalAlignment="Center"> 
            <Image Height="35" Width="35" Source="{Binding TestResultImage}" ToolTip="{Binding ResultType}" /> 
           </Grid> 
          </DataTemplate> 
         </my:DataGridTemplateColumn.CellTemplate> 
        </my:DataGridTemplateColumn> 

        <my:DataGridTemplateColumn MinWidth="100" CanUserSort="True" SortMemberPath="TestName"> 
         <my:DataGridTemplateColumn.Header> 
          <TextBlock Margin="3" FontSize="14" Text="Dates"></TextBlock> 
         </my:DataGridTemplateColumn.Header> 
         <my:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Grid Margin="5" VerticalAlignment="Center" HorizontalAlignment="Center"> 
            <TextBlock FontSize="14" TextWrapping="Wrap" AllowDrop="True" Text="{Binding TestName}" ToolTip="This test analyzed data from this date" /> 
           </Grid> 
          </DataTemplate> 
         </my:DataGridTemplateColumn.CellTemplate> 
        </my:DataGridTemplateColumn> 

        <my:DataGridTemplateColumn MinWidth="150" Width="*" CanUserSort="True" x:Name="TestDetails" SortMemberPath="Result"> 
         <my:DataGridTemplateColumn.Header> 
          <TextBlock Margin="4" FontSize="14" Text="Details"></TextBlock> 
         </my:DataGridTemplateColumn.Header> 
         <my:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Grid Margin="5" VerticalAlignment="Center"> 
            <TextBlock TextWrapping="Wrap" FontSize="13" Text="{Binding Result}" ToolTip="Click for more details about this test" /> 
           </Grid> 
          </DataTemplate> 
         </my:DataGridTemplateColumn.CellTemplate> 
        </my:DataGridTemplateColumn> 

       </my:DataGrid.Columns> 

       <my:DataGrid.RowDetailsTemplate> 
        <DataTemplate> 
         <Grid> 
         <my:DataGrid Background="White" 
            BorderThickness="0" 
            CanUserReorderColumns="True" 
            HeadersVisibility="Column" 
            CanUserResizeRows="False" 
            ColumnHeaderHeight="25" 
            ItemsSource="{Binding GuiValidatorResults}" 
            HorizontalGridLinesBrush="LightGray" 
            x:Name="validatorList" 
            VerticalGridLinesBrush="White" 
            VerticalScrollBarVisibility="Auto" 
            HorizontalScrollBarVisibility="Auto" 
            FlowDirection="LeftToRight" 
            AutoGenerateColumns="False" 
            IsReadOnly="True" 
            ScrollViewer.CanContentScroll="False" 
            ScrollViewer.ScrollChanged="" 
            SelectionMode="Single" 
            MouseDoubleClick="HideAllValidatorDetails" 
            GridLinesVisibility="Horizontal"> 
          <my:DataGrid.Columns> 

           <my:DataGridTemplateColumn MinWidth="60" CanUserSort="True" SortMemberPath="ResultType"> 
            <my:DataGridTemplateColumn.Header> 
             <TextBlock Margin="0" Text="Result"></TextBlock> 
            </my:DataGridTemplateColumn.Header> 
            <my:DataGridTemplateColumn.CellTemplate> 
             <DataTemplate> 
              <Grid Margin="0"> 
               <Image Height="25" Width="25" Source="{Binding ValidatorResultImage}" ToolTip="{Binding ResultType}" /> 
              </Grid> 
             </DataTemplate> 
            </my:DataGridTemplateColumn.CellTemplate> 
           </my:DataGridTemplateColumn> 

           <my:DataGridTemplateColumn MinWidth="100" CanUserSort="True" SortMemberPath="DescriptiveTestLabel"> 
            <my:DataGridTemplateColumn.Header> 
             <TextBlock Margin="0" Text="Validator"></TextBlock> 
            </my:DataGridTemplateColumn.Header> 
            <my:DataGridTemplateColumn.CellTemplate> 
             <DataTemplate> 
              <Grid Margin="5"> 
               <TextBlock TextWrapping="Wrap" AllowDrop="True" Text="{Binding DescriptiveTestLabel}" /> 
              </Grid> 
             </DataTemplate> 
            </my:DataGridTemplateColumn.CellTemplate> 
           </my:DataGridTemplateColumn> 

           <my:DataGridTemplateColumn MinWidth="150" Width="*" CanUserSort="True" SortMemberPath="Text"> 
            <my:DataGridTemplateColumn.Header> 
             <TextBlock Margin="0" Text="Message"></TextBlock> 
            </my:DataGridTemplateColumn.Header> 
            <my:DataGridTemplateColumn.CellTemplate> 
             <DataTemplate> 
              <Grid Margin="5"> 
               <TextBlock TextWrapping="Wrap" AllowDrop="True" Text="{Binding Text}" /> 
              </Grid> 
             </DataTemplate> 
            </my:DataGridTemplateColumn.CellTemplate> 
           </my:DataGridTemplateColumn> 

          </my:DataGrid.Columns> 

          <my:DataGrid.RowDetailsTemplate> 
           <DataTemplate> 
              <GroupBox FontWeight="Bold" Margin="5" Header="Additional Details:"> 
             <Grid Margin="5" x:Name="WidthSetter"> 
              <Grid.RowDefinitions> 
               <RowDefinition /> 
               <RowDefinition /> 
              </Grid.RowDefinitions> 
              <Grid.Resources> 
               <DataTemplate x:Key="AdditionalDetailsTemplate"> 
                <Grid> 
                 <DockPanel> 
                  <TextBlock HorizontalAlignment="Left" Margin="0,0,0,10" Text="{Binding Path=.}" TextWrapping="Wrap" /> 
                 </DockPanel> 
                </Grid> 
               </DataTemplate> 
              </Grid.Resources> 
              <ListView FontWeight="Normal" 
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                 HorizontalContentAlignment="Stretch" 
                 BorderThickness="0" 
                 HorizontalAlignment="Left" 
                 Margin="0" 
                 Width="{Binding ActualWidth, ElementName=WidthSetter}" ItemTemplate="{StaticResource AdditionalDetailsTemplate}" ItemsSource="{Binding Path=AdditionalDetails}" /> 

              <Grid Grid.Row="1" Margin="3,5,5,5"> 

               <Grid.RowDefinitions> 
                <RowDefinition /> 
                <RowDefinition /> 
               </Grid.RowDefinitions> 
               <TextBlock FontWeight="Bold" Text="Records involved:" /> 
               <ListView BorderThickness="0" ItemsSource="{Binding InvolvedRecords}" ItemTemplate="{StaticResource ValidatorInvolvedRecordsTemplate}" Grid.Row="1" /> 
              </Grid> 
             </Grid> 
            </GroupBox> 
           </DataTemplate> 
          </my:DataGrid.RowDetailsTemplate> 
         </my:DataGrid> 
         </Grid> 
        </DataTemplate> 
       </my:DataGrid.RowDetailsTemplate> 

      </my:DataGrid> 

我认为会有一些方法来告诉子DataGrid通过滚动事件上升到“testList”的DataGrid,但我一直没能够弄清楚如何。

谢谢!

+0

我知道那已经很旧了,但是你还记得如果你有这个解决方案吗? – Beetlejuice 2017-06-30 11:07:46

回答

2

除非RowDetails正在处理滚动本身,请尝试将主DataGrid上的属性ScrollViewer.CanContentScroll设置为false。

ScrollViewer.CanContentScroll="False"