WPF Thumb (DragDrop-1-)

索引サイト

buttonは他のコントロールに内包して使用するのが簡単・・かな?




<Canvas>
<Thumb x:Name="thumb1"
Canvas.Left="53" Canvas.Top="52"
Background="Aqua" Width="100" Height="100"
DragCompleted="thumb1_DragCompleted" DragStarted="thumb1_DragStarted" DragDelta="thumb1_DragDelta" />
<!--button直は動作しない-->
<Thumb x:Name="thumb2"
Canvas.Left="322" Canvas.Top="52"
Background="Aqua" Width="100" Height="32" DragDelta="thumb2_DragDelta">
<Thumb.Template>
<ControlTemplate>
<Button Content="Button" Name="button1" />
</ControlTemplate>
</Thumb.Template>
</Thumb>
<Thumb x:Name="thumb3"
Canvas.Left="53" Canvas.Top="193"
Background="Aqua" Width="190" Height="170" DragDelta="thumb3_DragDelta">
<Thumb.Template>
<ControlTemplate>
<Calendar Name="calendar1" />
</ControlTemplate>
</Thumb.Template>
</Thumb>
<Thumb x:Name="thumb4"
Canvas.Left="322" Canvas.Top="193"
Background="Aqua" Width="300" Height="200" DragDelta="thumb4_DragDelta">
<Thumb.Template>
<ControlTemplate>
<TabControl Name="tabControl1">
<TabItem Header="tabItem1" Name="tabItem1">
<Grid Name="grid1" Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="10" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="10" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
</Grid.ColumnDefinitions>
<Button Content="Button1-tab" Grid.Column="1" Grid.Row="1" Margin="3" Name="button1" Click="button1_Click"/>
<Button Content="Button2-tab" Grid.Column="2" Grid.Row="2" Margin="3" Name="button2" Click="button1_Click"/>
<Button Content="Button3-tab" Grid.Column="1" Grid.Row="3" Margin="3" Name="button3" Click="button1_Click"/>
</Grid>
</TabItem>
</TabControl>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Canvas>
<Thumb x:Name="thumb5"
Canvas.Left="463" Canvas.Top="53"
Background="Aqua" Width="158" Height="83" DragDelta="thumb5_DragDelta">
<Thumb.Template>
<ControlTemplate>
<StackPanel Canvas.Left="500" Canvas.Top="70" Height="78" Name="stackPanel1" Width="147" Background="AliceBlue">
<Button Content="Button" Height="30" Name="button1" Width="100" Click="button1_Click"/>
</StackPanel>
</ControlTemplate>
</Thumb.Template>
</Thumb>




public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Left = 0;
this.Top = 0;
}
private void thumb1_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
Cursor = Cursors.Hand;
}
private void thumb1_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb1, Canvas.GetLeft(thumb1) + e.HorizontalChange);
Canvas.SetTop(thumb1, Canvas.GetTop(thumb1) + e.VerticalChange);
}
private void thumb1_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
Cursor = Cursors.Arrow;
}
//**button直は動作しない****
private void thumb2_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb2, Canvas.GetLeft(thumb2) + e.HorizontalChange);
Canvas.SetTop(thumb2, Canvas.GetTop(thumb2) + e.VerticalChange);
}
private void thumb3_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb3, Canvas.GetLeft(thumb3) + e.HorizontalChange);
Canvas.SetTop(thumb3, Canvas.GetTop(thumb3) + e.VerticalChange);
}
private void thumb4_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb4, Canvas.GetLeft(thumb4) + e.HorizontalChange);
Canvas.SetTop(thumb4, Canvas.GetTop(thumb4) + e.VerticalChange);
}
private void thumb5_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb5, Canvas.GetLeft(thumb5) + e.HorizontalChange);
Canvas.SetTop(thumb5, Canvas.GetTop(thumb5) + e.VerticalChange);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("click");
}
}




AX