单击最后一个元素

Make click on last element

如何点击最后一个元素?

解释:用户点击按钮并在点击模式下将鼠标移动到另一个按钮。所以应该对最后一个按钮执行点击,而不是第一个按钮。

在 WPF 中,我已经尝试了所有可能的事件来获得它(MouseUp 似乎是正确的选择,但这并没有达到我的预期)。

如何解决这个问题?


UPD:xaml 中有 2 个按钮:

<Button Grid.Column="1" Grid.Row="3" Click="ButtonThigh_OnClick" >
                        <Grid Width="150" Height="75">
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <TextBlock Grid.Row="0" Text="{Binding Path=TrackingThighCircumference, Mode=OneWay}"/>
                            <TextBlock MouseRightButtonDown="Thigh_EditStarted" Height="65" Grid.RowSpan="2">
                                <TextBox Name="sizeThigh" Background="Transparent" Height="40" IsEnabled="False" ContextMenu="{x:Null}" ContextMenuService.IsEnabled="false" DataObject.Pasting="TextBox_Pasting" MaxLength="6" PreviewTextInput="TextBox_PreviewTextInput" LostFocus="TextBox_LostFocus" KeyUp="TextBox_KeyUp" Tag="ThighCircumferenceUI" Text="{Binding Path=ThighCircumferenceUI, Mode=TwoWay}"></TextBox>
                                <LineBreak/>
                                <TextBlock Name="ThighLb" Text="{x:Static strings:Resource.Thigh}"/><Span>&#160;(</Span><Span><TextBlock Text="{Binding ElementName=MeasurenentText, Path=Text}"/></Span><Span>)</Span>
                            </TextBlock>
                        </Grid>
                    </Button>
                    <Button Grid.Column="0" Grid.Row="4" Click="ButtonWaist_OnClick" >
                        <Grid Width="150" Height="75">
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <TextBlock Grid.Row="0" Text="{Binding Path=TrackingJacketWaistCircumference, Mode=OneWay}"/>
                            <TextBlock Grid.Row="1" MouseRightButtonDown="Waist_EditStarted">
                                <TextBox Name="sizeWaist" Background="Transparent" Height="40" IsEnabled="False" ContextMenu="{x:Null}" ContextMenuService.IsEnabled="false" DataObject.Pasting="TextBox_Pasting" MaxLength="6" PreviewTextInput="TextBox_PreviewTextInput" LostFocus="TextBox_LostFocus" KeyUp="TextBox_KeyUp" Tag="JacketWaistCircumferenceUI" Text="{Binding Path=JacketWaistCircumferenceUI, Mode=TwoWay}"></TextBox>
                                <LineBreak/>
                                <TextBlock Name="WaistLb" Text="{x:Static strings:Resource.Waist}"/><Span>&#160;(</Span><Span><TextBlock Text="{Binding ElementName=MeasurenentText, Path=Text}"/></Span><Span>)</Span>
                            </TextBlock>
                        </Grid>
                    </Button>

按钮点击次数:

private void ButtonThigh_OnClick(object sender, RoutedEventArgs e)
    {
        _resultViewModel.SelectMeasurement(si => si.ThighCircumference, vm => vm.ThighImg);
    }

    private void ButtonWaist_OnClick(object sender, RoutedEventArgs e)
    {
        _resultViewModel.SelectMeasurement(si => si.JacketWaistCircumference, vm => vm.WaistImg);
    }

你可以在按钮上试试:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("1");
    }
    private void button2_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("2");
    }

    private void Button1_OnPreviewMouseUp(object sender, MouseButtonEventArgs e)
    {
        button1_Click(sender,e);
    }
    private void Button2_OnPreviewMouseUp(object sender, MouseButtonEventArgs e)
    {
        button2_Click(sender,e);
    }

    private void Button1_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;
    }
    private void Button2_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;
    }

之后,您的 PreviewMouseUp 将按预期工作: