我尝试使用MVVMLight并在不破坏MVVM模式的情况下,尝试实现开放/关闭导航,例如W10移动版Instagram应用程序中存在的导航/关闭导航。
我有一个有框架的shell,我想点击放在该框架中的页面中的一个按钮,打开一个"子窗口"从右到左。
任何想法?
答案 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