osm*_*nes 1 wpf xaml wpfdatagrid
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=test}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Template="{DynamicResource TemplateDataGridPrintAndExport}"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid/>
Run Code Online (Sandbox Code Playgroud)
我有一个像上面这样的数据网格.Datgrid的行详细信息模板还包含数据网格.单击父级列时,将填充内部数据网格.我的问题是:如果行详细信息模板datagrid已完成并且用户鼠标悬停在其上,同时滚动父数据网格则滚动不起作用.用户应将鼠标悬停在主数据栏上以进行滚动.但是,它不是用户友好的.如何防止内部数据网格以这种方式运行?
我通过尝试替代方案找到了灵魂:
<DataGrid ScrollViewer.CanContentScroll="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=test}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Template="{DynamicResource TemplateDataGridPrintAndExport}" IsReadOnly="True" ScrollViewer.CanContentScroll="False" IsEnabled="False"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid/>
Run Code Online (Sandbox Code Playgroud)
解决方案是 ScrollViewer.CanContentScroll="False"将外部数据网格和IsReadOnly="True" ScrollViewer.CanContentScroll="False" IsEnabled="False"属性的属性赋予内部数据网格.现在它顺利滚动并符合父数据网格.
小智 5
我想提出两种替代解决方案,因为所选择的一种具有严重的副作用。Kaizen 提到了其中之一 - 您失去了与嵌套 DataGrid 及其子控件交互的能力。第二个是控件在禁用状态下的外观变化。
更改IsReadOnly="True"为IsHitTestVisible="False"osmanraifgunes 的解决方案。这将修复外观副作用,但您仍然无法与内部控件交互(使用鼠标)。代码:
<DataGrid ScrollViewer.CanContentScroll="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=test}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid
IsHitTestVisible="False"
ScrollViewer.CanContentScroll="False"
Template="{DynamicResource TemplateDataGridPrintAndExport}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
PreviewMouseWheel在控件中捕获隧道事件RowDetailsTemplate并将其作为冒泡事件传回父级。这将有效地使RowDetailsTemplate盲区中的控件仅对鼠标滚动进行控制,并允许可视化树中的上方控件随心所欲地处理它。xml:
<DataGrid ScrollViewer.CanContentScroll="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=test}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid
PreviewMouseWheel="DataGrid_PreviewMouseWheel"
Template="{DynamicResource TemplateDataGridPrintAndExport}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
后面的代码:
<DataGrid ScrollViewer.CanContentScroll="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=test}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid
IsHitTestVisible="False"
ScrollViewer.CanContentScroll="False"
Template="{DynamicResource TemplateDataGridPrintAndExport}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |