C# 调整userControl的大小时,包含图像的WPF userControl不会调整大小

C# 调整userControl的大小时,包含图像的WPF userControl不会调整大小,c#,wpf,image,visual-studio,adorner,C#,Wpf,Image,Visual Studio,Adorner,我在wpf工作。我有一个用户控件,其中有一个图像控件 我通过image.source将BitmapImage添加到此userControl 然后将此userControl添加到画布,任何附加到此画布的控件都附加了装饰器,以便可以拖动四个角中的每个角来调整userControl的大小 我的问题是,位图没有使用userControl调整大小 当用户控件调整大小时,是否有一种简单的方法使位图重新绘制 以下是用户控件的XAML: <UserControl x:Name="cusImageContr

我在wpf工作。我有一个用户控件,其中有一个图像控件

我通过image.source将BitmapImage添加到此userControl

然后将此userControl添加到画布,任何附加到此画布的控件都附加了装饰器,以便可以拖动四个角中的每个角来调整userControl的大小

我的问题是,位图没有使用userControl调整大小

当用户控件调整大小时,是否有一种简单的方法使位图重新绘制

以下是用户控件的XAML:

<UserControl x:Name="cusImageControl" x:Class="StoryboardTool.CustomImage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" BorderThickness="0" MouseDown="cusImageControl_MouseDown">
    <Image x:Name="image"  >
        <Image.ContextMenu>
            <ContextMenu>
                <MenuItem x:Name="ContextMenuBringForward" Header="BringForward" Click="ContextMenuBringForward_Click"/>
                <MenuItem x:Name="ContextMenuSendBackward" Header="SendBackward" Click="ContextMenuSendBackward_Click"/>
            </ContextMenu>
        </Image.ContextMenu>
    </Image>
</UserControl>

public void chooseImage()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Choose Image to Add";

            if (ofd.ShowDialog() == true)
            {
                BitmapImage bImage = new BitmapImage();
                bImage.BeginInit();
                bImage.UriSource = new Uri(ofd.FileName);
                bImage.EndInit();

                image.Width = bImage.Width;
                image.Height = bImage.Height;
                image.Source = bImage;
                //image.Stretch = Stretch.Fill;
            }
        }

公共无效选择图像()
{
OpenFileDialog ofd=新建OpenFileDialog();
ofd.Title=“选择要添加的图像”;
if(ofd.ShowDialog()==true)
{
BitmapImage bImage=新的BitmapImage();
bImage.BeginInit();
bImage.UriSource=新Uri(ofd.FileName);
bImage.EndInit();
image.Width=bImage.Width;
image.Height=bImage.Height;
image.Source=bImage;
//image.Stretch=Stretch.Fill;
}
}

您似乎在设置代码背后的宽度和高度。。。这是
图像的大小。请尝试在xaml中设置
Image.Source
属性,而不是此属性:

<UserControl x:Class="WpfApplication1.UserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Image Source="/WpfApplication1;component/Images/ImageName.png" />
    </Grid>
</UserControl>

我希望这会有所帮助。

您是否已经提到usercontrol中的尺寸(宽度、高度)了?能否向我们展示您的XAML代码?为usercontrol添加了XAML,以及我选择图像的方法。图像缩放模式如何?前任:
<Image Source="{Binding ViewModelSourceProperty}" /> // don't set size here