单击最后一个元素
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> (</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> (</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 将按预期工作:
如何点击最后一个元素?
解释:用户点击按钮并在点击模式下将鼠标移动到另一个按钮。所以应该对最后一个按钮执行点击,而不是第一个按钮。
在 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> (</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> (</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 将按预期工作: