2010-06-02 43 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"