Laden...

Drag Drop auf ein ComboboxItem

Erstellt von Mallett vor 5 Jahren Letzter Beitrag vor 5 Jahren 862 Views
M
Mallett Themenstarter:in
171 Beiträge seit 2012
vor 5 Jahren
Drag Drop auf ein ComboboxItem

Hallo zusammen,


<ComboBox
                        x:Name="DropdownSelection"
                        AllowDrop="True"
                        DragOver="DropdownSelection_DragOver"                        
                        DataContext="{Binding ToolBar.ViewModel}"
                        Style="{StaticResource DropdownMenuStyle}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <Image
                                    x:Name="item"
                                    Width="48"
                                    Height="48"
                                    AllowDrop="True"
                                    Drop="item_Drop"
                                    HorizontalAlignment="Center"
                                    Source="{Binding ImgIcon}"
                                    Stretch="Uniform" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>


<Style x:Key="DropdownMenuStyle" TargetType="ComboBox">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ComboBox">
                            <Grid x:Name="OuterGrid">

                                <WpfControls:IconToggleButton
                                    x:Name="Expand"  
                                    IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"/>
                                
                                <Popup
                                    Name="Popup"
                                    AllowsTransparency="True"                                    
                                    Focusable="False"
                                    IsOpen="{TemplateBinding IsDropDownOpen}"      
                                    Placement="Bottom"
                                    PlacementTarget="{Binding ElementName=OuterGrid}">
                                    <ContentControl                                        
                                        Content="{Binding ViewModel}"    
                                        ContentTemplate="{StaticResource LayoutViewModel}"/>
                                </Popup>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

Mein Problem an der Stelle, welches ich mir absolut nicht erklären kann:

  1. DropDownSelection_DragOver -> dieses Event wird ausgelöst, wenn ich ein Objekt über den IconToggleButton ziehe.

  2. Im Handler des Events setze ich IsDropDownOpen der Combobox auf true, d.h. das Popup mit den Images öffnet sich. So weit so gut.

  3. Jetzt würde ich gerne über item_Drop mitbekommen, wenn das gezogene Objekt über einem der Items (Images) gedroppt wird. Das funktioniert aber nicht. Beim Drop über einem Bild wird kein Event ausgelöst.

Hat jemand eine Erklärung dafür?

Danke

W
955 Beiträge seit 2010
vor 5 Jahren

Was ist mit AllowDrop="True"?

M
Mallett Themenstarter:in
171 Beiträge seit 2012
vor 5 Jahren

Ist doch drin?

W
955 Beiträge seit 2010
vor 5 Jahren

Das Popup ist aus Sicht des Betriebssystems ein extra Fenster und gehört nicht in den VisualTree. Du sollst mal prüfen ob das Popup ebenfalls ein AllowDrop braucht.

M
Mallett Themenstarter:in
171 Beiträge seit 2012
vor 5 Jahren

Hallo witte,

danke erstmal für die Antwort. Ich habs mal ausprobiert, AllowDrop="True" im popup ändert leider nichts. Auch nicht im ContentControl 😦