2016-11-25 5 views
-1

Привет товарищи программисты,UserControl изменение размера во время выполнения

я работаю на программное обеспечение WPF, который использует холст для отображения и перемещения графических объектов. Эти графические объекты, содержащие элементы управления UserControl этикетки или прямоугольники:

<UserControl x:Class="DashEditor.Views.MovableObject" 
     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" > 


<Grid Name="ControlLayout"> 

    <StackPanel x:Name="DisplayPanel" > 

     <Canvas x:Name="graphicObjectCanvas" Width="100" Height="50"> 

      <Viewbox x:Name="graphicObjectViewBox" Width="100" Height="50" IsEnabled="False" Canvas.Left="0" Canvas.Top="0" Stretch="Fill"/> 

     </Canvas> 

    </StackPanel> 

</Grid> 

мне нужно, чтобы изменить эти UserControls, я видел примеры с большими пальцами, но я не могу понять, как использовать его в UserControl.

Благодарим за помощь!

ответ

0

ОК, я нашел рабочее решение для изменения размеров моих графических объектов. я добавил большой палец в мой UserControl, которые становятся видимыми при выборе графического объекта:

<Grid Name="ControlLayout"> 

    <StackPanel x:Name="DisplayPanel"> 
     <Border x:Name="CanvasBorder" BorderThickness="1"> 
      <Canvas x:Name="graphicObjectCanvas" Width="100" Height="50" Background="Aquamarine"> 
       <Viewbox x:Name="graphicObjectViewBox" Width="100" Height="50" IsEnabled="False" Stretch="Fill"/> 

       <Thumb x:Name="myThumb" Canvas.Left="80" Canvas.Top="30" Width="20" Height="20" DragDelta="myThumb_DragDelta" Visibility="Hidden" 
         PreviewMouseLeftButtonDown="myThumb_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="myThumb_PreviewMouseLeftButtonUp" BorderBrush="Blue" BorderThickness="2"/> 

      </Canvas> 
     </Border> 

    </StackPanel> 

</Grid> 

И это код, за который изменяет свойства моего графического объекта:

private void myThumb_DragDelta(object sender, DragDeltaEventArgs e) 
    { 
     double yadjust = graphicObjectViewBox.Height + e.VerticalChange; 
     double xadjust = graphicObjectViewBox.Width + e.HorizontalChange; 
     if ((xadjust >= 0) && (yadjust >= 0)) 
     { 
      graphicObjectViewBox.Width = xadjust; 
      graphicObjectViewBox.Height = yadjust; 
      graphicObjectCanvas.Width = xadjust; 
      graphicObjectCanvas.Height = yadjust; 
      Width = (int)xadjust; 
      Height = (int)yadjust; 
      XapParent.Width = (int)xadjust; 
      XapParent.Height = (int)yadjust; 
      Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) + e.HorizontalChange); 
      Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) + e.VerticalChange); 
     } 
    } 
Смежные вопросы