Autor Beitrag
Aggins
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 04.07.08 17:40 
Hallo,
für eine Anwendung habe ich Drag/Drop implementiert. Zuerst hatte ich dafür Panels benutzt. Unter anderem wies ich dort den gedraggten Elementen DragEnter- und DragLeave-EventHandler zu, um einen bestimmten Effekt hervorzurufen, falls die Elemente übereinanderliegen würden. Da mit Panels leider kein DataBinding möglich ist, nahm ich schließlich ItemsControls zur Hand. Den Items eines ItemsControls kann ich leider kein Event zuweisen, da es sich um objects handelt. Was kann ich jetzt tun, um den von mir gewünschten Effekt zu erzielen?

Ciao


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 04.07.2008 um 17:54
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 05.07.08 10:34 
Jedes Item eines ItemControls wird zum Anzeigen in ein Container-Element gewrappt. Dieses kannst du per ItemContainerStyle stylen und ihm die Events anhängen.
Aggins Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 07.07.08 11:11 
Cool danke! Im Microsoft-Forum konnte mir niemand diese Frage beantworten.
Aggins Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 07.07.08 12:30 
Hallo,
gerade habe ich es mal ausprobiert. Kann man da wirklich DragEnterEvents einfügen. Ich habe es irgendwie nicht hinbekommen. Wie sähe denn der XAML-Code aus?

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
<ItemsControl
   <ItemsControl.ItemContainerStyle>
      <Style>
          ---- ? ----
      </Style>
   </ItemsControl.ItemContainerStyle>
</ItemsControl>


Dnake

Moderiert von user profile iconChristian S.: XML-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 07.07.08 14:29 
Style kennt zwei mögliche Child-Elemente: Setter für Properties und EventSetter für (Routed) Events.
Außerdem musst du afair noch TargetType="{x:Type FrameworkElement}" angeben.
Aggins Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 07.07.08 15:02 
Den EventSetter hatte ich schon gesetzt, ich hatte nur TargetType="{x:Type FrameworkElement}" vergessen. Danke schön. Ich hatte das Gleiche schon mal über ein Template versucht. Das seltsame ist, dass beides Mal die DragEvents nicht angeschlagen sind. Im Gegensatz zu anderen wie zB MouseEnter. Woran könnte das denn liegen.
Aggins Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 09.07.08 16:16 
Weiß keiner was dazu?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 09.07.08 18:57 
Hast du auch daran gedacht, AllowDrop zu setzen?
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<ListBox>
    <ListBoxItem>Hello</ListBoxItem>
    <ListBoxItem>World</ListBoxItem>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="FrameworkElement">
            <EventSetter Event="DragEnter"
                         Handler="Meep" />
            <Setter Property="AllowDrop"
                    Value="True" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ListBox>