2017-01-23 77 views
0

我已经创建了一个usercontrol,它有一些控件在视图外,但是只要动画显示它们就可以看到它们。动画正在改变它们的偏移,所以它们慢慢出现。现在,当我将我的用户控件放在某个视图上时,那些我不想看到的控件是可见的。我绑定使用Grid,GridView,Canvas ...但每次我都可以看到这些控件。c#uwp cut usercontrol

我需要4行我的usercontrols,才能调整大小。而这个问题使一些用户控件重叠在一起。

这里是我怎么也得让他们在网:

<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> 

如何显示我的用户的唯一核心部分?如何隐藏我不想看到的其他控件?什么控制是最好的呢?

+0

你是如何实现你的UserControl的?请与我们分享[mcve]。 –

回答

1

要控制显示内容,您需要告诉它在哪里设置要显示的限制。在WPF中有帮助ClipToBounds property,但不幸的是这在UWP中不可用,所以你需要自己设置'Clip'属性。

所以,如果你的页面看起来像这样

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

而且你的控制XAML看起来像这样

<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> 

你可以看到,我已经手动设置clip属性与控件的大小相同。

this question的答案还显示了一些其他方法,包括动态设置它的方法。