5
&'u bir Stackpanel
düğmesinden başka bir Stackpanel
'a sürüklemek istiyorum. Uygulama hala çalışıyor, ancak Düğme'nin, Drag Event sırasında görsel bir Geri Bildirim olarak fare imlecine eklenmesini istiyorum.WPF Sürükle & Bırak, DragOver
Bütün gün bir çözüm arıyordum, ancak sadeceile değil, Stackpanels
ile ilgili çözümleri buluyorum.
Button.xaml
<UserControl x:Class="LisaBeispiel2.Controls.ImageButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="IB"
AllowDrop="True">
<Grid>
<Button Margin="3 0 3 3"
VerticalAlignment="Top"
HorizontalAlignment="Left"
IsEnabled="{Binding IsButtonEnabled, ElementName=IB}">
<StackPanel Orientation="Vertical">
<Image Source="{Binding ElementName=IB, Path=Image}"
Width="35"
Height="35"
Margin="8" />
<TextBlock Text="{Binding ElementName=IB, Path=Text}"
Foreground="White"
FontSize="10"
FontFamily="Arial"
TextWrapping="Wrap"
TextAlignment="Center" />
</StackPanel>
</Button>
</Grid>
Button.xaml.cs
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.LeftButton == MouseButtonState.Pressed)
{
// Package the data into a Dataobject
DataObject data = new DataObject();
data.SetData("Object", this);
// Inititate the drag-and-drop operation with 3 Parameter: dragSource, data, allowedEffects
DragDrop.DoDragDrop(this, data, DragDropEffects.All);
}
}
Penceresi: Burada
benim Kod olduğu .xaml<StackPanel Orientation="Horizontal"
Drop="panel_Drop">
<controls:ImageButton
Image="/LisaBeispiel2;component/Images/Icons/Rotate.png"
Text="Rotate"/>
<controls:ImageButton
Image="/LisaBeispiel2;component/Images/Icons/Zoom_Pan.png"
Text="Zoom/Pan"/>
</StackPanel>
<StackPanel Orientation="Horizontal"
Drop="panel_Drop">
<controls:ImageButton
Image="/LisaBeispiel2;component/Images/Icons/ButtonPlatzhalter.png"
Text="Add"/>
<controls:ImageButton
Image="/LisaBeispiel2;component/Images/Icons/ButtonPlatzhalter.png"
Text="Add"/>
</StackPanel>
</StackPanel>
</StackPanel>
Window.xaml.cs
private void panel_Drop(object sender, DragEventArgs e)
{
// If an element in the panel has already handled the drop,
// the panel should not also handle it.
if (e.Handled == false)
{
Panel _panel = (Panel)sender;
UIElement _element = (UIElement)e.Data.GetData("Object");
if (_panel != null && _element != null)
{
// Get the panel that the element currently belongs to,
// then remove it from that panel and add it the Children of
// the panel that its been dropped on.
Panel _parent = (Panel)VisualTreeHelper.GetParent(_element);
if (_parent != null)
{
_parent.Children.Remove(_element);
_panel.Children.Add(_element);
}
}
}
}
Sen .. değiştirmek Bazı ana konteynerde bir satıcıya ihtiyaç duyacaktır. Bu adornere bir tuval koyabiliyor ve peşinden olduğun etkisi alabiliyorsun. Google şunu: wpf dragadorner – Brannon