2017-01-23 1 views
0

J'ai créé une commande usercontrol qui a des contrôles en dehors de la vue, mais ils seront visibles dès que l'animation les montrera. L'animation change leur décalage, donc ils apparaissent lentement. Maintenant, quand je mets mon usercontrol sur une certaine vue, ces contrôles que je ne veux pas voir sont visibles. J'ai lié pour utiliser Grid, GridView, Canvas ... mais chaque fois que je peux voir ces contrôles.C# uwp coupe de usercontrol

J'ai besoin de 4 de mes contrôleurs d'affilée pour être resizeble. Et cette question fait que certains contrôles userc se chevauchent.

Voici comment je les ai montrer dans la grille:

<Grid x:Name="gridDown" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="25*" /> 
      <ColumnDefinition Width="25*" /> 
      <ColumnDefinition Width="25*" /> 
      <ColumnDefinition Width="25*" /> 
     </Grid.ColumnDefinitions> 

     <local:MyUserControl x:Name="myControl1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0"/> 
     <local:MyUserControl x:Name="myControl2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="1"/> 
     <local:MyUserControl x:Name="myControl3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="2"/> 
     <local:MyUserControl x:Name="myControl4" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="3"/> 

</Grid> 

Comment montrer qu'une partie centrale de mon usercontrol? Comment cacher le reste des contrôles que je ne veux pas voir? Quel contrôle est le meilleur pour cela?

+0

Comment avez-vous réussi votre UserControl? S'il vous plaît partager un [mcve] avec nous. –

Répondre

1

Pour contrôler ce qui est affiché, vous devez lui indiquer où définir les limites de ce qu'il doit afficher. Dans WPF a le utile ClipToBounds property mais malheureusement ce n'est pas disponible dans UWP donc vous devez définir la propriété 'Clip' vous-même.

Donc, si votre page ressemblait à ce

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <local:MyControl/> 
    <local:MyControl/> 
    <local:MyControl/> 
</StackPanel> 

Et votre XAML de contrôle ressemblait à ce

<Grid Height="50" Width="100"> 
    <Grid.Clip> 
     <RectangleGeometry Rect="0 0 100 50"/> 
    </Grid.Clip> 
    <Grid.Resources> 
     <Storyboard x:Name="ShowRedBit"> 
      <DoubleAnimation Storyboard.TargetProperty="Rectangle.RenderTransform.(CompositeTransform.TranslateX)" 
          Storyboard.TargetName="RedBit" 
          Duration="0:0:2" 
        To="0"/> 
     </Storyboard> 
    </Grid.Resources> 
    <Button HorizontalAlignment="Center" Click="Button_Click">show red</Button> 
    <Rectangle Fill="Red" Height="50" Width="50" x:Name="RedBit" RenderTransformOrigin="0.5,0.5" > 
     <Rectangle.RenderTransform> 
      <CompositeTransform TranslateX="-100"/> 
     </Rectangle.RenderTransform> 
    </Rectangle> 
</Grid> 

Vous pouvez voir que j'ai manuellement mis la propriété de clip doit être la même que la taille du contrôle.

Les réponses à this question montrent également d'autres approches, y compris une façon de le définir dynamiquement.