2012-03-10 103 views
1

iv'e获得了几个绑定项目控件,这些控件都扮演了放置目标的角色 我需要能够在这些项目控件之间拖放项目。无法在绑定项目控件之间拖放项目

的问题是项目控制的不是由拖放框架

ItemsControl的专家组确认为下降目标:

<ItemsPanelTemplate x:Key="TopPipePanelTemplate"> 
      <StackPanel></StackPanel> 
    </ItemsPanelTemplate> 

的DataTemplate中:

<DataTemplate x:Key="PipeDataItem" > 
     <Ellipse Width="45" Height="45" Fill="{Binding IsMine,Converter={StaticResource MyCheckerOwnerToColorConverter}}"></Ellipse> 
    </DataTemplate> 

ItemsControl样式:

<Style TargetType="{x:Type ItemsControl}" x:Key="ItemsControlStyle"> 
      <Setter Property="ItemTemplate" Value="{StaticResource PipeDataItem}"></Setter> 
      <Setter Property="AllowDrop" Value="True"></Setter>          
      <EventSetter Event="Drop" Handler="ItemsControlDropTarget"></EventSetter> 
      <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter>  
    </Style> 

**对于该示例可以采取2 ItemsControls的:**

<ItemsControl ItemsSource="{Binding Path=Pipes[23].Checkers}" Style="{StaticResource ItemsControlStyle}"/> 
    <ItemsControl Grid.Column="1" ItemsSource="{Binding Path=Pipes[22].Checkers}" Style="{StaticResource ItemsControlStyle}"/> 

时经常显示:

enter image description here

空(左)一个不为虽然AllowDrop设置为True,并且 处理Drop事件(与所有项目控件一样)在此屏幕上,看ItemsControl的样式上文)

现在

时的i颜色它那突然被识别ItemsControl的面板:

<ItemsPanelTemplate x:Key="TopPipePanelTemplate"> 
      <StackPanel Background="AliceBlue"></StackPanel> 
    </ItemsPanelTemplate> 

enter image description here

仿佛现在占据整个细胞,其它占据.. iv'e尝试将面板设置为VerticalAlignment =“Stretch”,但这也没有影响

我试图理解为什么我的itemcontrols不被识别为启用drop, 即使我期望他们占据那个空间,此外,椭圆的项目控制 只被识别,直到椭圆的高度占据它的内容。

什么想法?

只是为了阐明我的意思,认为放置目标是拖动椭圆时,您可以将其放在项目控件的顶部。

现在iv'e刚刚成立的背景为透明

+0

解决方案设置了透明背景,以便堆叠面板延伸以适应整个单元格。 – 2012-03-11 09:30:13

回答

3

面板的默认背景色是不存在的,这意味着命中测试通过。为了获得它注册命中测试,如鼠标悬停事件,你需要给它一个背景颜色。通常我只是使用White,虽然你说Transparent也可以,并且会是更好的选择。

另外,StackPanels通常只占用他们需要的空间。您可能会更适合使用延伸以填充所有可用空间的面板,例如DockPanelLastChildFill="False",并在您的项目上设置DockPanel.Dock="Top"

+0

iv'e实际上现在确实给它一个值,如果透明的背景 它确实工作:) 我不知道stackpanels只需要他们需要的空间 我会检查我可以如何使用dockpanel, 但正如我所说iv'e已经找到了这个 感谢您的所有帮助,现在iv'e得到了另一个问题,虽然 如果你不介意看看。 http://stackoverflow.com/questions/9647341/update-ui-when-adding-to-observable-collection#comment12249136_9647341 – 2012-03-10 15:29:57

+0

@eranotzer Hrrrm所以也许默认的背景是'Null',那么不是'Transparent'。我记得之前我遇到过这个问题,我只记得我必须在面板上设置背景颜色才能注册鼠标事件。 – Rachel 2012-03-10 15:33:29

+0

这是我得到的相同结论,它缝合有点奇怪.. – 2012-03-10 15:45:05

相关问题