【发布时间】:2021-01-09 17:47:20
【问题描述】:
您好,我为缩放图片制作了定制的父控件。在那个 Control 里面有子画布,在 Canvas 里面有子图像 Control 。我创建了缩放和图像测量菜单。我也可以测量坐标图像。我禁用 Parent ZoomBorder 控件时的问题我无法触发 Child Image 的事件。我可以禁用名为 ZoomBorder 的 ZoomControl 但我想要 MouseDown 的图像事件。启用 Zoomcontrol 并且它可以工作时,我可以禁用子图像事件。 这是我的代码。
<utils:ZoomBorder x:Name="ZoomBorder" IsEnabled="{Binding IsEnableZoom}" ClipToBounds="True" Background="Gray" Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="4">
<Canvas IsEnabled="{Binding IsEnableCanvas}">
<Image x:Name="DIIMGFINAL" cal:Message.Attach="[Event MouseDown] = [Action MDownCalCulateDistance($source, $eventArgs)];
[Event MouseUp] = [Action MUpCalCulateDistance($source, $eventArgs)];
[Event MouseMove] = [Action MMoveCalCulateDistance($source, $eventArgs)]"/>
<Line IsHitTestVisible="False" X1="{Binding FirstPoint.X}" Y1="{Binding FirstPoint.Y}"
X2="{Binding SecondPoint.X}" Y2="{Binding SecondPoint.Y}"
Stroke="Red" StrokeThickness="3"/>
</Canvas>
</utils:ZoomBorder>
这是菜单项 ImageMeasuring 和 Zoom
<Menu Grid.ColumnSpan="3" Grid.Column="1" Grid.Row="0" Background="Transparent" >
<MenuItem x:Name="ズームControl" Header="ズーム">
<!--Item For Zoom-->
</MenuItem>
<MenuItem x:Name="Img_Measurement" Header="Image Measurement">
<!--Item For Measure-->
</MenuItem>
</Menu>
这是我用于 Zoom 激活的 C# 代码
public void ズームControl()
{
//For Only Zoom
IsEnableZoom = true;
IsEnableCanvas = false;
MessageBox.Show("Zoom Control Starts", "Alert", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
这是图像测量
public void Img_Measurement()
{
IsEnableZoom = false;
IsEnableCanvas = true;
MessageBox.Show("Image Measurement Starts", "Alert", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
Here Is My Image MouseDown 事件
public void MDownCalCulateDistance(object sender, System.Windows.Input.MouseEventArgs e)
{
f (IsEnableCanvas == false) return;
if (!(sender is System.Windows.Controls.Image)) return;
try{
//Code Here
}
Catch(Exception ex){
//code here
}
}
这是用于启用的属性
public bool IsEnableZoom
{
get
{
return _isEnableZoom;
}
set
{
_isEnableZoom = value;
NotifyOfPropertyChange(() => IsEnableZoom);
}
}
public bool IsEnableCanvas
{
get
{
return _isEnableCanvas;
}
set
{
_isEnableCanvas = value;
NotifyOfPropertyChange(() => IsEnableCanvas);
}
}
如您所见,当我禁用 ZoomControl 的 ZoomBorder 时,我无法执行 MouseDown 事件。当启用父事件的 ZoomBorder 时,我可以禁用 Mousedown。请帮我 。提前致谢
【问题讨论】:
标签: c# wpf mvvm caliburn.micro