当调整用户控件的大小时,包含图像图像的WPF用户控件不会调整大小
本文关键字:图像 控件 调整 用户 WPF 小时 包含 | 更新日期: 2023-09-27 18:23:52
我在wpf工作。我有一个userControl,其中有一个Image控件。
我通过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;
}
}
您似乎在代码后面设置了宽度和高度。。。这是Image
的大小。请尝试在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>
如果我将其放入MainWindow.xaml
中,则在调整窗口大小时Image
会调整大小。
如果您需要在代码中设置Image
的URL,那么您可以在视图模型中添加一个属性,将其绑定到Source
属性,然后改为代码中的新路径:
<Image Source="{Binding ViewModelSourceProperty}" /> // don't set size here
我希望这能有所帮助。