XAML和MVVMLight自定义动画

时间:2016-06-20 09:43:17

标签: c# xaml mvvm uwp

我尝试使用MVVMLight并在不破坏MVVM模式的情况下,尝试实现开放/关闭导航,例如W10移动版Instagram应用程序中存在的导航/关闭导航。

我有一个有框架的shell,我想点击放在该框架中的页面中的一个按钮,打开一个"子窗口"从右到左。

任何想法?

2 个答案:

答案 0 :(得分:0)

您应该有一个包含两个窗口的面板,并将其中一个的可见性设置为隐藏 将它的可见性绑定到ViewModel上的属性 当您单击该按钮时,将可见性设置为True,并拥有一个wpf动画,以便它可以播放"幻灯片"进/出。

答案 1 :(得分:0)

我的一个想法是使用datatemplate创建一个窗口,所以在你的mainwindow.xaml中,你会有像

这样的东西。
<Window ..    
    <Grid>
       <ContentPresenter Content="{Binding Window1}"/> 
       <ContentPresenter Content="{Binding Window2}"/>    
    </Grid>
/>

从那里,也许你可以有一个布尔属性来检查该属性是否为真,然后将可见性设置为可见,否则,将可见性设置为折叠/隐藏。如果您需要,这里是booleantovisibility的转换器(以防您需要它)

using System;
using System.Windows;
using System.Windows.Data;

namespace FaceTheWall.converters
{
    class BooleanToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is Boolean && (bool)value)
            {
                return Visibility.Visible;
            }
            return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is Visibility && (Visibility)value == Visibility.Visible)
            {
                return true;
            }
            return false;
        }
    }
}

以下是如何在xaml

中使用booleantovisibility转换器的示例
<TextBox...
     Visibility="{Binding ButtCancel, Converter={StaticResource BooleanToVisibilityConverter}}" 
... >
</TextBox