从XAML中的上下文菜单修改图像高度



在我的XAML页面中,我用上下文菜单定义了一个图像:

<Image Height="{Binding Image.Height, Mode=TwoWay}" MaxHeight="2000" HorizontalAlignment="Left" StretchDirection="Both" Stretch="Uniform"
Source="{Binding Image.ImageData, Converter={StaticResource ImageByteConverter}}"
x:Name="Image1">
<Image.ContextMenu>
<ContextMenu>
    <MenuItem Header="200" Click="ImageHeight200_Click" />
    <MenuItem Header="400" Click="ImageHeight400_Click" />
    <MenuItem Header="600" Click="ImageHeight600_Click" />
    <MenuItem Header="800" Click="ImageHeight800_Click" />
    <MenuItem Header="1000" Click="ImageHeight1000_Click" />
</ContextMenu>
</Image.ContextMenu>
</Image>

现在我想添加代码来调整图像的大小。

当我写这样的时

private void ImageHeight200_Click(object sender, RoutedEventArgs e)
{
    var img = (Image)e.Source;
    img.Height = 200;
}

它访问MenuItem,但不访问图像,我收到一条错误消息:

"System.Windows.Controls.MenuItem"类型的对象无法转换为"System.Windows\Controls.Image"类型。

我的问题是:

如何访问图像对象?

您可以通过名称引用图像

private void ImageHeight200_Click(object sender, RoutedEventArgs e)
{
    Image1.Height = 200;
}

您可以使用ContextMenu 的PlacementTarget属性

private void ImageHeight200_Click(object sender, System.Windows.RoutedEventArgs e){
MenuItem mnu = sender as MenuItem;
Image sp = null;
if(mnu!=null)
{
    sp = ((ContextMenu)mnu.Parent).PlacementTarget as Image;
}}

最新更新