2016-08-28 5 views
1

usercontrol内に配置された親指でカスタムusercontrolのサイズを変更しようとしています。wpf thumbを使用したusercontrolのサイズ変更がドラッグに比例しない

これはユーザーコントロールです:

<UserControl x:Class="ER.Entity" 
     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" 
     xmlns:local="clr-namespace:ER" 
     mc:Ignorable="d" 
     Name="entityRoot"> 
<Grid Name="entityGrid"> 
    <Thumb x:Name="resizeThumb" Height="10" Width="10" Margin="200,90,-15,-10" DragDelta="Resize" /> 
    <Border Opacity="100" BorderThickness="5" BorderBrush="Black"> 
     <TextBlock x:Name="textBox1" TextWrapping="Wrap" Text="{Binding ElementName=entityRoot, Path=EntityName}" VerticalAlignment="Top" PreviewMouseDown="EntityPreviewMouseDownHandler" PreviewMouseMove="EntityPreviewMouseMoveHandler" PreviewMouseUp="EntityPreviewMouseUpHandler" /> 
    </Border> 
</Grid> 

そして、これがDragDeltaイベントによってトリガする方法である:

private void Resize(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
    { 
     entityGrid.SetValue(WidthProperty, entityGrid.ActualWidth + e.HorizontalChange); 
     entityGrid.SetValue(HeightProperty, entityGrid.ActualHeight + e.VerticalChange); 
    } 

問題は、私は親指をドラッグすると、ということです、ユーザーコントロールのサイズ変更はマウスの動きよりもはるかに大きくなります。

答えて

1

の問題は、あなたのThumbオブジェクトがGridの左と上に参照されているので、あなたは順番に起因する動きに加えて、Thumbの効果的な相対運動を引き起こすことをGridのサイズを変更するときマウス。

RightBottomするThumbアライメントを変更し、GridWidthHeightプロパティにThumb.MarginからThumb位置を移動することを目的としてThumbGridのサイズを変更することができます:

<Grid Name="entityGrid" Width="200" Height="90"> 
    <Thumb x:Name="resizeThumb" Height="10" Width="10" 
     HorizontalAlignment="Right" VerticalAlignment="Bottom" 
     Margin="0,0,-15,-10" DragDelta="Resize" /> 
    <Border Opacity="100" BorderThickness="2" BorderBrush="Black"> 
    <TextBlock x:Name="textBox1" TextWrapping="Wrap" 
       Text="{Binding ElementName=entityRoot, Path=EntityName}" 
       VerticalAlignment="Top" 
       PreviewMouseDown="EntityPreviewMouseDownHandler" 
       PreviewMouseMove="EntityPreviewMouseMoveHandler" 
       PreviewMouseUp="EntityPreviewMouseUpHandler" /> 
    </Border> 
</Grid> 
+0

そうです!ありがとうございます。 –

関連する問題