UWP网格转换

3
我尝试为我的弹出网格(用户控件)创建一个过渡效果。它起作用了,但只有一次,之后,过渡效果就不起作用了。此外,我关闭网格时没有反向过渡效果。
Xaml用户控件:
<UserControl Visibility="Collapsed">

    <Grid Background="red">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid.Transitions>
            <TransitionCollection>
                <EdgeUIThemeTransition Edge="Bottom"/>
            </TransitionCollection>
        </Grid.Transitions>

        <StackPanel>
            <Button Content="Close" Click="close_Click"/>
        </StackPanel>
    </Grid>
</UserControl>

C#用户控件:

public sealed partial class MyUserControl1 : UserControl
{
    public MyUserControl1()
    {
        this.InitializeComponent();
    }

    private void close_Click(object sender, RoutedEventArgs e)
    {
        Visibility = Visibility.Collapsed;
    }
}

Xaml页面:

<Page>
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <local:MyUserControl1 x:Name="popUp"/>
        <Button Content="Open" Click="Open_Click"/>
    </Grid>
</Page>

C#页面:

private void Open_Click(object sender, RoutedEventArgs e)
{
    popUp.Visibility = Visibility.Visible;
}

我认为问题出在“可见性”上,但是我需要显示和隐藏我的控件,我应该在我的用户控件中使用视觉状态吗?


1
似乎EdgeUIThemeTransition只加载一次,当移除MyUserControl1然后再将其添加到页面时,过渡效果会加载。您还可以更改另一个可以添加到Storyboard中的过渡效果。 - Jayden
我应该为可见性创建一个故事板吗?如果是的话,当我设置UserControl的可见性时,如何激活它? - sasukaru
2个回答

1

现在我使用的是:

C#用户控件(删除用户控件):

private void close_Click(object send, RoutedEventArg e)
{
    ((Panel)this.Parent).Children.Remove(this);
}

Xaml 用户控件(我在这里设置了过渡效果)

<UserControl.Transitions>
    <TransitionCollection>
        <EdgeUIThemeTransition Edge="Botom"/>
    </TransitionCollection> 
</UserControl.Transitions>

c# 页面(创建一个用户控件):

MyUserControl cont = new MyUserControl();
MygridName.children.Add(cont);

使用这种方法时,您是否同时获得前进(进入)和后退(退出)动画? - Corcus

0
在 click_Close 语句中,你尝试使用过吗?
this.Visibility = Visibility.Collapsed;

因为我读到的方式,目前似乎没有针对性的元素。

我承认,我还没有测试过这个 - 这只是我注意到的一些东西,希望它能够起作用并节省您一些编码时间。(我只懂得足够的C#来制造危险>=D)


是的 :( 是Visual Studio提示我删除"this",但使用"this"和不使用都得到了相同的结果。但还是谢谢你的回答 ^^ - sasukaru
抱歉,我会稍后尝试一些东西 - 希望你能找到答案。 - trippedOverXaml
没有,我还没有找到答案,使用转换可能是错误的方式,但我不知道如何在没有它的情况下获得相同的结果。:( - sasukaru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接