长话短说; 我有一个网格内有一个网格。两个网格都有双击事件,这些事件应该触发不同的方法调用(主网格显示一个窗口,而 DataTemplate 中的网格显示一个带有来自所选详细信息行的参数的窗口)。
问题是,即使 e.Handled 设置为 true,双击详细信息行也会调用双击主网格。
简化的 XAML:
<Window x:Class="DoubleClickDataTemplate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DoubleClickDataTemplate"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<DataTemplate x:Key="LinesGrid">
<DataGrid x:Name="dgLines"
ItemsSource="{Binding Path=Lines}"
AutoGenerateColumns="True"
IsReadOnly="True"
MouseDoubleClick="dgLines_MouseDoubleClick">
</DataGrid>
</DataTemplate>
</Window.Resources>
<Grid>
<DataGrid x:Name="dgFiles"
ItemsSource="{Binding}"
AutoGenerateColumns="True"
IsReadOnly="True"
RowDetailsVisibilityMode="VisibleWhenSelected"
RowDetailsTemplate="{StaticResource LinesGrid}"
MouseDoubleClick="dgFiles_MouseDoubleClick">
</DataGrid>
</Grid>
</Window>
输出显示,当我双击 DataTemplate/DetailRow 时,这两个事件都会被调用:
00:05.616 (00:03:456) dgLines_MouseDoubleClick(object sender, MouseButtonEventArgs e)
dgFiles_MouseDoubleClick(object sender, MouseButtonEventArgs e)
最接近“解决方案”的是使用锁定标志(https://www.oipapio.com/question-3430969),但这可能会在很多方面出错。
有没有办法让双击详细信息行只调用相关事件而不是两个事件?
慕工程0101907
相关分类