【问题标题】:How to hide an element when it's on the phone?如何在手机上隐藏元素?
【发布时间】:2014-05-06 19:26:48
【问题描述】:

想法是这样的,您正在 Visual Studio 2013 Update 2 中为 Windows 8.1-Update 和 Windows Phone 8.1 创建一个 WinRT-XAML 通用应用程序。您在手机和平​​板电脑平台之间共享相同的 XAML 视图。您正在使用聚合的 CommandBar 控件向用户显示按钮。在您的 Windows 应用程序中,您有 5 个主要按钮,但 Windows Phone UI 仅支持 4 个。当您在 Windows Phone 中运行您的应用程序时,您意识到第 5 个按钮已被删除,但它删除了结束按钮,而中间按钮是您想要的已删除。您不想重新排序按钮。您有哪些选择可以让一个 UIElement 在手机上隐藏但在平板电脑上可见?

【问题讨论】:

    标签: winrt-xaml win-universal-app


    【解决方案1】:

    您可以通过多种方式处理此问题。如果您想要一种可靠且可重用的方法,您可以在要隐藏的按钮的可见性上使用转换器。 XAML 将是这样的:

    <Page.Resources>
        <Converters:HiddenWhenPhoneConverter x:Name="HidePhone" />
    </Page.Resources>
    <Button Visibility="{Binding, Converter={StaticResource PhoneHide}}" />
    

    然后你会有一个类似这样的转换器:

    public class HiddenWhenPhoneConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
    #if WINDOWS_PHONE_APP
            return Visibility.Collapsed;
    #else
            return Visibility.Visible;
    #endif
        }
        public object ConvertBack(object value, Type targetType, object parameter, string language)
        { throw new NotImplementedException(); }
    }
    
    public class VisibleWhenPhoneConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
    #if WINDOWS_PHONE_APP
            return Visibility.Visible;
    #else
            return Visibility.Collapsed;
    #endif
        }
        public object ConvertBack(object value, Type targetType, object parameter, string language)
        { throw new NotImplementedException(); }
    }
    

    记住:从性能的角度来看,这只会在视图加载时执行。所以,它应该是一个最小的影响,并给你你想要的结果。还有一件事。如果您没有为Button 或按钮的父级DataContext 设置一些值,转换器将不会触发。您可以通过在 Button 或其父级上设置 DataContext="{x:Null}" 来解决此问题。但是,在大多数情况下,您使用的是 MVVM,并且已经设置了 DataContext,所以这没有实际意义。

    【讨论】:

    • 这也是命令栏的推荐内容吗?我对这些没有太多经验,但我想我看到那些应该在空间不可用时自动重排到上下文/下拉菜单?
    • 除了单独的 UI 之外,我找不到更好的方法。处理各种尺寸并不是小菜一碟。太糟糕了。我猜就是这样。
    • 我发现了新的响应式布局控件的机会... :)
    猜你喜欢
    • 2018-04-18
    • 2020-12-21
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多