2013-07-19 79 views
0

我正在wpf中工作。我有一個用戶控件,其中坐着一個圖片控件。當用戶控件調整大小時,包含圖像圖像的WPF userControl不會調整大小

我通過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; 
      } 
     } 
+0

你有沒有提到在usercontrol中的尺寸(寬度,高度)? –

+0

你能告訴我們你的XAML代碼嗎? –

+0

爲UserControl添加了XAML,並在其中選擇了該圖像的方法。 – kev3kev3

回答

1

你似乎在背後設置的寬度和高度在你的代碼...這是大小的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 

我希望有幫助。

+0

非常感謝 – kev3kev3