рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛:

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ (рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд░реНрдо рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢реНрд╡реЗрдд рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдмрд┐рдВрджреБ рдХреЗ рдХрд░реАрдмред рдореИрдВ рдмрд┐рд▓реНрд▓реА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред
рддреЛ, рдкрд░рд┐рдЪрдпред
рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рд╣рдо рддреБрд░рдВрдд рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рдореЗрдВ рдЦреБрдж рдХреЛ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдореЗрдВ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдЯреАрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмреЗрд╕рд┐рдХ рдХрдВрдЯреНрд░реЛрд▓ (рдпреВрдЬрд░ рдХрдВрдЯреНрд░реЛрд▓) рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ +
рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдЯрд╛рд░реНрдЧ (
рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣
рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдЯрд╛рд░реНрдЯ ) рд╣реИред рдпрд╣ рдПрдХ рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рдпрд╛ рдХрдИ рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣реИ, рдХрд┐ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд▓реЛ рдПрдХ рдирдпрд╛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред

рдореИрдВрдиреЗ рдЗрд╕реЗ DragAndDropTestApp рдХрд╣рд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред
рдЕрдЧрд▓реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ:

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ MainPage.xaml рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
xmlns:toolkit= "clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
xmlns:my= "clr-namespace:DragAndDropTestApp"
* All source code (under and below) was highlighted with Source Code Highlighter .
рдЯреВрд▓рдХрд┐рдЯ рдкрд░ред рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдирд┐рд╣рд┐рдд рд╣реИред
рд╕реНрдХреЗрдЪ xamlред
рддреАрди рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдХрдЕрдк рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
< TextBlock
Text ="Users:"
Style ="{StaticResource Header}" />
< toolkit:ListBoxDragDropTarget
Grid . Row ="1"
HorizontalContentAlignment ="Stretch"
VerticalContentAlignment ="Stretch" >
< ListBox >
< ListBox.ItemTemplate >
< DataTemplate >
< my:UCUser />
</ DataTemplate >
</ ListBox.ItemTemplate >
</ ListBox >
</ toolkit:ListBoxDragDropTarget >
рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ (рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ App.xaml рдореЗрдВ рдбрдм рдХрд┐рдпрд╛ рдерд╛)ред рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, ListBox рд╕реНрд╡рдпрдВ, ListBoxDragDropTarget рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред ItemTemplate рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред UCUser рдореЗрд░рд╛ рдЕрдкрдирд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣реИред рдЕрдВрджрд░ рдХреБрдЫ рднреА рдЕрд▓реМрдХрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

- < рдЧреНрд░рд┐рдб
- x: рдирд╛рдо = "рд▓реЗрдЖрдЙрдЯрд░реВрдЯ"
- рдкреГрд╖реНрдарднреВрдорд┐ = "рдкрд╛рд░рджрд░реНрд╢реА" >
- < Grid.ColumnDefinitions >
- < ColumnDefinition Width = "рдСрдЯреЛ" />
- < ColumnDefinition Width = "4 *" />
- < ColumnDefinition Width = "6 *" />
- </ Grid.ColumnDefinitions >
- < Grid.RowDefinitions >
- < рд░реЛрд╡рдлрд┐рдирд┐рд╢рди рд╣рд╛рдЗрдЯ = "рдСрдЯреЛ" />
- < рд░реЛрд╡рдлрд┐рдирд┐рд╢рди рд╣рд╛рдЗрдЯ = "рдСрдЯреЛ" />
- </ Grid.RowDefinitions >
- < рдЫрд╡рд┐
- рд╕реНрд░реЛрдд = "../ рдЫрд╡рд┐рдпрд╛рдБ / gnome_face_devilish.png"
- рдЪреМрдбрд╝рд╛рдИ = "48"
- рдКрдБрдЪрд╛рдИ = "48"
- рдорд╛рд░реНрдЬрд┐рди = "15, 0, 20, 0"
- рдЧреНрд░рд┐рдб ред рд░реЛрд╡рд╕реНрдкреИрди = "2" />
- < TextBlock
- рдкрд╛рда = "рдЙрдкрдирд╛рдо:"
- рдЧреНрд░рд┐рдб ред рдХреЙрд▓рдо = "1" />
- < TextBlock
- рдкрд╛рда = "{рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрде = рдирд┐рдХрдиреЗрдо, рдореЛрдб = рд╡рдирд╡реЗ}"
- рдЧреНрд░рд┐рдб ред рдХреЙрд▓рдо = "2"
- FontWeight = "рдмреЛрд▓реНрдб" />
- < TextBlock
- рдкрд╛рда = "рдХрд░реНрдо:"
- рдЧреНрд░рд┐рдб ред рд░реЛ = "1"
- рдЧреНрд░рд┐рдб ред рдХреЙрд▓рдо = "1" />
- < TextBlock
- рдкрд╛рда = "{рдмрдВрдзрди рдкрде = рдХрд░реНрдо, рд╡рд┐рдзрд╛ = OneWay}"
- рдЧреНрд░рд┐рдб ред рд░реЛ = "1"
- рдЧреНрд░рд┐рдб ред рдХреЙрд▓рдо = "2"
- FontWeight = "рдмреЛрд▓реНрдб" />
- </ рдЧреНрд░рд┐рдб >
рд╕реНрд░реЛрдд рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рдкрдВрдЬреАрдХреГрдд рд╣реИред
рд╡реИрд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рд╣реИред рдпрд╣рд╛рдБ рдЙрдирдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ:
public class User
{
public string NickName { get ; set ; }
public int Karma { get ; set ; }
}
рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ:
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдореЗрдирдкреЗрдЬ: UserControl
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореЗрдирдкреЗрдЬ ()
- {
- рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдХрдореНрдкреЛрдиреЗрдВрдЯ ();
- рдпрд╣ .DataContext = рдпрд╣ ;
- рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХреЙрд▓реЗрдХреНрд╢рди ();
- рд▓реЛрдбрдпреВрдЬрд░ ();
- }
- // рд╕рдВрдЧреНрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░реЗрдХреНрд╖рдг рдпреЛрдЧреНрдп рдЕрд╡рд▓реЛрдХрди <рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛> рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░реЗрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╕рд╛рд╣рд┐рддреНрдп <рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛> рд╡реНрд╣рд╛рдЗрдЯрд▓рд┐рд╕реНрдЯ { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░реЗрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╕рд╛рд╣рд┐рддреНрдп <рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛> рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
- // рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрдЧреНрд░рд╣
- рдирд┐рдЬреА рд╢реВрдиреНрдп рдкреНрд░рд╛рд░рдВрднрдХрд▓реЗрдХреНрд╢рди ()
- {
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рдирдпрд╛ рдСрдмреНрдЬрд╝рд░реНрд╡реЗрдмрд▓ рдХреЙрд▓реЗрдХреНрд╢рди <рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛> ();
- рд╢реНрд╡реЗрддрд╕реВрдЪреА = рдирдпрд╛ рдкреНрд░реЗрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд <рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛> ();
- BlackList = рдирдпрд╛ рд╡реЗрдзрд╢рд╛рд▓рд╛ рдХрд╛ рдЪрдпрди <<>;
- }
- // рд╡рд┐рдзрд┐ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреА рд╣реИ
- рдирд┐рдЬреА рд╢реВрдиреНрдп рд▓реЛрдбрд░ ()
- {
- var r = new random ();
- // рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд░реНрдо рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде 20 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВред
- for ( int i = 1; рдореИрдВ <21; i ++)
- {
- var newUser = рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
- {
- NickName = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо" + i,
- рдХрд░реНрдо = r.Next (200) - 100
- };
- Users.Add (newUser);
- }
- }
- }
MainPage рдХреЗ рд▓рд┐рдП
DataContext рдХреЗ рд░реВрдк рдореЗрдВ
, MainPage рдХреЛ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдореИрдВ рдбреЗрдЯрд╛ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреБрдбрд╝ рд╕рдХреВрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
< ListBox ItemsSource ="{Binding Path=Users, Mode=TwoWay}" >
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ:
AllowDrop ="True"
рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ, рд╣рдо рддрддреНрд╡ рдХреЛ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЗрд╕реЗ ListBox рдФрд░ ListBoxDragDropTarget рджреЛрдиреЛрдВ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:

рдЕрдм рдЖрдк рдХрд┐рд╕реА рднреА рд╕реВрдЪреА рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд░реНрдо рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдПрдХ рдХреЛ рд╡реНрд╣рд╛рдЗрдЯ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдЬреЛ рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк'рдИ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:
DragEnter рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдШрд╕реАрдЯрд╛ рдЧрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЧрдВрддрд╡реНрдп рддрддреНрд╡ рдХреА рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░ рдЬрд╛рддрд╛ рд╣реИ (DragOver рдШрдЯрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдЧ)ред
DragLeave - рдШрд╕реАрдЯрд╛ рдЧрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╕реНрд░реЛрдд рддрддреНрд╡ рд╕реЗ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рдерд╛ред
рдбреНрд░реИрдЧрдСрд╡рд░ - рдЬрдм рдЧрдВрддрд╡реНрдп рд╕реНрдерд╛рди рдкрд░ рдШрд╕реАрдЯрд╛ рдХрдВрдЯреЗрдирд░ рдЪрд▓рддрд╛ рд╣реИ рддреЛ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИред
рдбреНрд░реЙрдк - рдШрд╕реАрдЯрд╛ рдЧрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЧрдВрддрд╡реНрдп рддрддреНрд╡ рддрдХ "рдЧрд┐рд░рд╛" рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╢реНрд╡реЗрддрд╕реВрдЪреА рдХреЗ рд▓рд┐рдП
DragEnter рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред
- < рдЯреВрд▓рдХрд┐рдЯ: рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕рдбреНрд░рд╛рдбреНрд░реЙрдкрдЯреНрд░реЗрдЯ
- AllowDrop = "рдЯреНрд░реВ"
- рдЧреНрд░рд┐рдб ред рд░реЛ = "1"
- рдЧреНрд░рд┐рдб ред рдХреЙрд▓рдо = "1"
- рдХреНрд╖реИрддрд┐рдЬрд╕рдВрдмрдВрдзреА рдЖрд░реЗрдЦрдг = "рдЦрд┐рдВрдЪрд╛рд╡"
- рд╡рд░реНрдЯрд┐рдХрд▓рдХрдВрдЯреЗрдВрдЯ рдСрд▓рд┐рдиреЗрдореЗрдВрдЯ = "рд╕реНрдЯреНрд░реЗрдЪ"
- DragEnter = "ListBoxDragDropTarget_DragEnter" >
- < рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕
- ItemSource = "{рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрде = рд╢реНрд╡реЗрддрд╕реВрдЪреА, рдореЛрдб = TwoWay}"
- x: рдирд╛рдо = "lbWhiteList" >
- < ListBox.ItemTemplate >
- < DataTemplate >
- < my: UCUser />
- </ DataTemplate >
- </ ListBox.ItemTemplate >
- </ ListBox >
- </ рдЯреВрд▓рдХрд┐рдЯ: ListBoxDragDropTarget >
рдФрд░ ListBox рдХреЛ рдПрдХ рдирд╛рдо рджреЗрдВ, рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред
рд╣реИрдВрдбрд▓рд░ рдЦреБрдж:
- рдирд┐рдЬреА рд╢реВрдиреНрдп ListBoxDragDropTarget_DragEnter ( рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЗрд╖рдХ, Microsoftред Windows.DragEventArgs рдИ)
- {
- // рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛
- var dataFormat = e.Data.GetFormats () [0];
- // рдЖрдЗрдЯрдо рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рд╛ рд╣реИ ItemDragEventArgs
- var DragEventArgs = e.Data.GetData (dataFormat) ItemDragEventArgs рдХреЗ рд░реВрдк рдореЗрдВ ;
- // рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдорд┐рд▓рд╛
- SelectionCollection sc = dragEventArgs.Data SelectionCollection рдХреЗ рд░реВрдк рдореЗрдВ ;
- // рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
- foreach (sc рдореЗрдВ var рдЖрдЗрдЯрдо)
- {
- // рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдШрд╕реАрдЯ рдЖрдЗрдЯрдо (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ) рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд░реНрдо рд╣реИ
- // рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╢реНрд╡реЗрдд рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд░реЛрдХред
- рдЕрдЧрд░ (рдЖрдЗрдЯрдоред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ )ред рдХрд░реНрдо <0)
- {
- lbWhiteList.AllowDrop = false ;
- рддреЛрдбрд╝рдирд╛ ;
- }
- }
- }
DragEventArgs.Data рдПрдХ
IDataObject рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдбреНрд░реИрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
GetData () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдФрд░ рдЖрдк
GetFormats () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
ItemDragEventArgs рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ UIElement рдкрд░ рдПрдХ рдбреНрд░реИрдЧ рдЗрд╡реЗрдВрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ
рдбреЗрдЯрд╛ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреНрд░реИрдЧреЗрдмрд▓ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╣рдо рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
SelectionCollection рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВред
рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рде рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЦреАрдВрдЪ рдФрд░ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
(рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП,
SelectionMode рдЧреБрдг рдХреЛ
рдПрдХрд╛рдзрд┐рдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ)ред
рдпрд╣ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдШрд╕реАрдЯреЗ рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд░реНрдо рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдЙрдиреНрд╣реЗрдВ "рдЫреЛрдбрд╝рдиреЗ" рд╕реЗ рд╕рдлреЗрдж рд╕реВрдЪреА рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред
рдЖрдк
MouseLeave рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдорд╛рди (True рдореЗрдВ) рдХреЗ рд▓рд┐рдП
AllowDrop рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдПрдХ рд╕реВрдЪреА рдХреЗ рднреАрддрд░ рдЖрдЗрдЯрдо рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдЗрдЯрдордкреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
< ListBox.ItemsPanel >
< ItemsPanelTemplate >
< StackPanel />
</ ItemsPanelTemplate >
</ ListBox.ItemsPanel >
рдЖрдк
рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред