2012-03-10 106 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

相關問題