簡體   English   中英

調整usercontrol大小時,包含圖像圖像的WPF userControl不會調整大小

[英]WPF userControl containing an image image doesnt resize when usercontrol is resized

我在wpf工作。 我有一個userControl,其中有一個Image控件。

我通過image.source向這個userControl添加了一個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.xamlImage在調整窗口大小時調整大小。

如果需要在代碼中設置Image的URL,則可以在視圖模型中添加屬性,將其綁定到Source屬性並將其更改為代碼中的新路徑:

<Image Source="{Binding ViewModelSourceProperty}" /> // don't set size here

我希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM