我正在开发一个仪表板应用程序,它使用框架来切换窗口上的页面。出于显而易见的原因,当用户在登录页面上时,我正在禁用“主页”等按钮。
目前我正在使用转换器将我的按钮的IsEnabled
属性绑定到当前页面是否为登录页面,如下所示:
[ValueConversion(typeof(Page), typeof(bool))]
public class IsNotLoginPageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(value is Login);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("Converter cannot convert back.");
}
}
IsEnabled="{Binding Path=CurrentPage, Converter={StaticResource IsLoginPage}}"
但是我想知道是否更好地将命令绑定到Can Executes,如下所示:
bool isNotLoginPage()
{
return !(CurrentPage is Login);
}
RelayCommand home;
public ICommand Home
{
get { return home ?? (home = new RelayCommand(homeExecute, isNotLoginPage)); }
}
void homeExecute()
{
Switcher.Switch(new MainPage());
}
我可以看到它会减少代码,但它们是否还有其他任何优势(例如开销)?我无法在网上找到比较这两种方法的任何内容。