2013-07-19 5 views
0

Я работаю в wpf. У меня есть userControl, в котором находится элемент управления Image.WPF userControl, содержащий изображение изображения, не изменяет размер при изменении пользовательского контроля

Я добавляю BitmapImage для этого пользователя. Проводя через image.source.

Этот userControl затем добавляется на холст, любой элемент управления, прикрепленный к этому холсту, имеет прикрепляемые adorners, так что каждый из четырех углов можно перетаскивать, чтобы изменить размер 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

Добавлен XAML для UserControl и метод, в котором я выбираю изображение. – kev3kev3

ответ

1

Вы, кажется, установив ширину и высоту в вашем коде позади ... это размер, который Image будет. Вместо этого, попробуйте установить Image.Source свойство в XAML:

<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 изменяет размер при изменении размера окна.

Если вам нужно установить URL в Image в коде, то вы можете добавить свойство в модели представления, привязать его к Source собственности и изменить его на новый путь в коде вместо:

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

Я надеюсь, что это поможет.

+0

Фантастическое спасибо – kev3kev3