2010-09-08 5 views
0

J'ai un contrôle d'utilisateur avec 6 viewbox, chacun peut avoir une image. Je n'ai pas défini la largeur ou la hauteur de la commande usercontrol (pas même les viewboxes). Au début, les viewbox sont vides. Je peux ajouter les images dynamiquement.Glisser N déposer des images dans une vue

<Grid x:Name="DashBoardGrid" DockPanel.Dock="Right"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="20"></RowDefinition> 
      <RowDefinition Height="200*"></RowDefinition> 
      <RowDefinition Height="10"></RowDefinition> 
      <RowDefinition Height="200*"></RowDefinition> 
      <RowDefinition Height="20"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="20"></ColumnDefinition> 
      <ColumnDefinition Width="200*"></ColumnDefinition> 
      <ColumnDefinition Width="10"></ColumnDefinition> 
      <ColumnDefinition Width="200*"></ColumnDefinition> 
      <ColumnDefinition Width="10"></ColumnDefinition> 
      <ColumnDefinition Width="200*"></ColumnDefinition> 
      <ColumnDefinition Width="20"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Border Grid.Row="1" Grid.Column="1"> 
      <DockPanel x:Name="dockPanel1" Margin="10,30,10,10" > 
       <TextBlock x:Name="TitleTxtblk1" DockPanel.Dock="Top" FontSize="10pt" TextWrapping="Wrap">screen 1</TextBlock> 
       <Viewbox x:Name="Viewbox1" MouseDown="Viewbox_MouseDown" MouseEnter="ScaleUp" MouseLeave="ScaleDown" 
         PreviewMouseLeftButtonDown="DockPanel_PreviewMouseLeftButtonDown" PreviewMouseMove="dockPanel_MouseMove" 
         Drop="dockPanel_Drop" DragEnter="dockPanel_DragEnter" AllowDrop="True"> 

       </Viewbox> 
      </DockPanel> 
     </Border> 
     <Border Grid.Row="1" Grid.Column="3" > 
      <DockPanel x:Name="dockPanel2" Margin="10,30,10,10" > 
       <TextBlock x:Name="TitleTxtblk2" DockPanel.Dock="Top" FontSize="10pt" TextWrapping="Wrap">screen 2</TextBlock> 
       <Viewbox x:Name="Viewbox2" MouseDown="Viewbox_MouseDown" MouseEnter="ScaleUp" MouseLeave="ScaleDown" 
         PreviewMouseLeftButtonDown="DockPanel_PreviewMouseLeftButtonDown" PreviewMouseMove="dockPanel_MouseMove" 
         Drop="dockPanel_Drop" DragEnter="dockPanel_DragEnter" AllowDrop="True"> 

       </Viewbox> 
      </DockPanel> 
     </Border> 

Je veux faire glisser et déposer les images d'un négatoscope à tout autre viewbox vide. Mais lorsque la vue est vide, elle n'est pas visible du tout. parce qu'il n'a pas de hauteur ou de largeur. Donc, je ne suis pas en mesure de déposer l'image dessus.

Alors, que devrais-je faire de sorte que, quand une boîte de vue a une image, toutes les boîtes de vue ont la même hauteur et la même largeur? toute autre solution est la bienvenue.

Répondre

0

Vous pouvez gérer les événements glisser/déposer dans un contrôle parent tel que la bordure. Et puis vous avez probablement besoin d'une référence à votre viewbox dans votre méthode glisser-déposer. Essayez ceci:

<Border Tag="{Binding ElementName=Viewbox2,Path=.} … > 

et dans votre glisser/déposer Methode

ViewBox v = (sender as Border).Tag as ViewBox;